navicat cloud 的成员权限仅控制项目内文件的可见与编辑,不干预数据库实际操作;设为 viewer 仍可删表,因其不限制连接后的 sql 执行,真正限制需在 mysql/postgresql 中执行 grant 授权。
navicat cloud 的「成员权限」只控制项目内文件的可见性与编辑能力,不控制数据库实际操作权限——想让成员查不了、改不了生产数据,必须在 mysql/postgresql 里配 grant,而不是只在 cloud 里设角色。
为什么设了 Viewer 还能删表?
因为 Viewer 角色仅禁止编辑项目中保存的 Query、Data Model 或连接配置,但不阻止成员用本地 Navicat 双击已共享的连接,然后手动写 DELETE FROM users 并执行。只要该连接用的是高权限账号(如 root 或 admin),所有 SQL 操作都照常生效。
-
Viewer= 不能改项目里的 SQL 文本、不能重命名连接、不能拖拽调整模型字段 -
Editor= 可以改项目内所有文件,但改完需手动保存到云才同步 - 真正限制数据操作:必须在目标数据库执行类似
GRANT SELECT ON mydb.* TO 'user1'@'%' - 检查权限是否生效:连上后执行
SHOW GRANTS FOR CURRENT_USER
添加成员时总显示「找不到用户」怎么办?
Navicat Cloud 查找成员依赖精确匹配注册邮箱,且对方必须已完成激活——不是“收到邀请邮件”就算数,而是必须点击邮件里的「立即激活」链接并成功登录过一次 Navicat ID。
- 输入邮箱时大小写敏感,
ABC@EXAMPLE.COM≠abc@example.com - 对方若未注册,或注册后没点激活链接,界面只报「找不到用户」,无进一步提示
- 免费版每项目最多 3 名成员,超限后即使输对邮箱也加不进新成员
- 建议提前让团队成员统一用企业邮箱注册,并由管理员账号批量创建项目
共享连接后,成员看不到某些数据库或表
这不是 Navicat Cloud 权限问题,而是连接所用数据库账号本身缺少元数据访问权限。Navicat 在连接后会自动执行 SHOW DATABASES 和 SHOW TABLES,如果账号没授权,就为空白。
- MySQL 中确认:
SHOW GRANTS FOR 'username'@'%',重点看是否有SHOW DATABASES权限 - PostgreSQL 中需确保用户有
CONNECT到对应 database,且public(或其他 schema)有USAGE,表级还需SELECT - Cloud 不过滤、不缓存这些结果——它只是把 Navicat 客户端拿到的原始列表原样展示
- 临时排查:让成员用同一账号在本地 Navicat 新建连接测试,若同样看不到库,问题就在数据库侧
如何避免连接配置被误改导致连错库?
共享的连接本质是同步一段 JSON,包含 host、port、username、甚至勾选「保存密码」后的密文。一旦 Editor 修改并保存,所有成员下次打开都会加载错误配置。
- 生产环境连接建议设为「只读共享」:由
Owner创建,仅分配Viewer角色 - 如需协作调优查询,应复制一份连接(右键 → 复制连接),改名后另存为「测试连接」再共享
- 关键连接不要勾选「保存密码」,改用操作系统密钥链或外部凭据管理器
- 每次修改连接配置前,先在项目里新建一个
Query文件备注变更原因和时间戳
最易被忽略的一点:Navicat Cloud 的「实时协同」不等于「实时生效」——文件修改后其他成员必须手动刷新项目视图(F5 或点击刷新按钮),否则看到的仍是旧版本;也没有冲突检测或合并逻辑,两人同时改同一个 Query,后保存的会直接覆盖前一个。











