Tutorials NocoDB

NocoDB Permissions: Who Can See and Who Can Change

The first problem with a shared base is not that people cannot use it, it is that they change what they should not. Roles, public link risks, and API tokens.

E
Eric Founder, Roamer Tech · · 7 min read

Want to start now? Deploy your NocoDB in 60 seconds

Smart spreadsheet — the open-source Airtable alternative. From NT$499/mo.

Subscribe to NocoDB

When you are the only user, permissions are pointless.

Add two more people and the problems show up: someone tweaks a filter by accident, someone sees a cost column they should not, someone deletes an entire field and nobody notices.

This article is about drawing those lines before any of that happens.

30-second overview

RoleRoughly what they can doTypically
OwnerEverything, including deletion and billingYou
CreatorChange the schema, the data, and create viewsWhoever maintains the system
EditorChange data, but not the schemaMost of your colleagues
CommenterView and comment, cannot change anythingStakeholders who give feedback
ViewerView onlyManagers, other departments

In practice the line that matters most is between Creator and Editor: whether someone can change the schema.

Why schema permissions should be tight

A bad data edit is visible — that cell has the wrong value, and you can put it back.

A bad schema change is hard to spot. Someone switches a field from number to text, or nudges the filter on a view, and everything looks normal on screen. The numbers just stop adding up, and you notice days later.

So make Editor the default, and grant Creator only to the people who genuinely need to restructure tables.

Locking views: protection finer than roles

Roles apply at the base level. But a common need is "everyone should use this view, and nobody should break it".

Once a view is locked, other people can still open it and edit data inside it, but they cannot change its filters, sorting or field settings.

Lock every shared working view. A filter someone silently changed is the kind of problem nobody admits to and nobody notices.

Public links: where things go wrong most often

Any view can produce a public link that works without an account. Convenient, but three things deserve attention:

RiskWhat to do
Links get forwardedSet a password, or turn the link off when you are done
There is no concept of expiryReview which links are still open on a regular basis
It shows that view's fieldsConfirm the sensitive fields really are hidden before you share it

The third one bites most often: you think you hid the cost column, but you hid it in a different view. Before you publish a link, open it yourself in a private window and see what it actually shows. That step takes less than a minute.

Forms are the safest way to face outward

If all you want is "let people outside fill in data", use a Form view rather than a public grid view.

A form is write-only — whoever fills it in cannot see the existing records. That is what you should reach for by default when collecting data.

API tokens are permissions too

Every NocoDB table has a REST API, and an API token is a key that never expires.

  • Issue one per use case — one for n8n, one for the website form. Then revoking one does not break the others
  • Never put one in front-end code — that is the same as publishing it
  • Revoke when someone leaves or a project ends

The API quickstart covers how to wire it up.

Practical advice for working as a team

Decide "who needs to see what" before you create views

Views organized by role are more useful than views organized by feature. Sales see their own customers, managers see everything sorted by amount, other departments see status only.

One person owns schema changes

This is a habit, not a permission setting. Only one person should be able to change a table's schema, and everyone else asks them. That is far easier than working out afterwards who changed what.

Deleting is more dangerous than editing

A bad edit can be undone; a deleted row is gone. When you grant Editor, be aware that it includes deleting rows.

A permission plan that works

For a five-person team's customer database, this is how it usually breaks down:

WhoRoleExtra settings
You (whoever maintains the system)OwnerOnly you make schema changes
Three sales repsEditorTheir own Kanban views, filtered to "owner = me"
ManagerViewerAn overview view, locked so it cannot be changed
Website inquiriesNo accountA public link to a form view
n8n automationNo accountA dedicated API token

Two decisions matter here: the manager gets Viewer, not Editor (they do not need to change anything, and an accidental change is expensive), and automations get their own token instead of a shared one (so revoking it does not break another system).

Beyond permissions, the real issue is usually habits

To be honest: most collaboration problems are not misconfigured permissions, they are unclear ownership.

Three things that help more than permission settings:

  • Name one person for schema changes — everyone else asks instead of doing it themselves
  • Lock every shared view — a filter someone changed is the hardest problem to detect
  • Review the list of public links periodically — those links do not expire on their own

FAQ

Q: Can I set permissions at the field level?

Hiding fields in a view gets you something similar, but that is presentation-layer control, not strict data permissions. If your requirement is "these people must never see this field", split the data into separate tables or bases.

Q: How do I know who changed what?

There is a record-level revision history you can check. But that is forensics after the fact, not prevention — tightening schema permissions is still the more effective move.

Q: What if an outside partner needs to see the data?

Create a view with only the fields and filters they need, set a password, and share the link. Do not create an account for them just for this; an account covers more than you think.

Q: Can I track who viewed a public link?

Public links are anonymous by nature. If you need to know who saw what, people have to log in with an account.

Checklist for departures and finished projects

This is the step most often missed, because unlike setting permissions there is no obvious moment that triggers it.

What to checkWhy
Remove their account permissionsThe basics — but remember they may be in several bases
Revoke the API tokens they createdTokens do not stop working when an account does
Public links they openedThose links have no expiry and are not tied to an account
Whether they are the only Creator on a tableOtherwise nobody can change its schema afterwards

The second row is what actually goes wrong in practice: the account is disabled, but the automation they wrote is still reading and writing data with a token nobody remembers. That is also why we recommend a separate token per use case — at least you know whose it is and what it does.

Sources and further reading

Further reading

Want someone to do it for you?

Once the data volume grows, or the system has to plug into what your company already runs, this stops being a question of picking a tool. Roamer Tech takes on custom enterprise systems and API integration:

Ready to get started with NocoDB?

60 seconds after you subscribe, NocoDB is installed for you — an isolated container with hard resource limits you never share, and HTTPS out of the box.

Subscribe to NocoDB

Billed monthly · no contract · cancel anytime

Hi, I'm Roamer! Tap me anytime with a question and I'll help you out.

Roamer

Roamer - AI assistant

Online
Roamer

Ask me anything, anytime — I'll do my best to help!

Powered by RoamerHost AI