Navicat 在 macOS 10.15+ 上无法访问本地文件是因系统沙盒限制,需在「隐私与安全性」中授予「完全磁盘访问」权限,并彻底重启应用;导入导出时应避免符号链接、网络盘及未授权路径,优先使用拖拽或已授权目录(如 ~/Downloads)。
Navicat 无法访问本地文件(如导入 SQL、导出备份)的典型表现
点击“导入”或“导出”时卡住、无反应,或弹出「权限被拒绝」「operation not permitted」错误,甚至根本找不到本地目录。这不是 navicat 自身 bug,而是 macos 对沙盒应用的文件系统访问限制在起作用 —— 即便 navicat 是从官网下载的,macos 10.15+ 也会默认阻止它随意读写任意路径。
必须先授权「完全磁盘访问」权限
Navicat 需要显式获得系统级文件访问许可,否则所有 open、read、write 系统调用都会被拦截。仅靠「允许来自未知开发者的应用」或 xattr -d com.apple.quarantine 完全无效。
- 打开「系统设置」→「隐私与安全性」→「完全磁盘访问」
- 点击右下角锁图标解锁,输入管理员密码
- 点击「+」号,前往
/Applications,选中Navicat Premium.app(注意:不是拖拽安装包,是已安装好的 .app) - 重启 Navicat,再试导入/导出操作
若列表里已有 Navicat 但依然失败,说明权限未真正生效:删除后重新添加,并确认勾选框已被打勾(灰色 = 未启用)。
导入 SQL 文件时路径被截断或找不到文件
Navicat 的文件选择器默认只显示「文档」、「下载」等受限目录,跳转到 /usr/local、/tmp 或项目根目录时会直接消失 —— 这是 macOS 的 Finder 沙盒策略,不是 Navicat 的 UI 问题。
- 不要依赖 Navicat 内置的「浏览」按钮找深层路径;改用「拖拽」:把 SQL 文件直接拖进 Navicat 的导入窗口区域
- 若拖拽无效,先将文件复制到
~/Downloads或~/Documents,再从这些目录选择 - 避免使用符号链接路径(如
~/myproject/db/init.sql),Navicat 可能无法解析,改用绝对路径/Users/yourname/myproject/db/init.sql
导出文件保存失败,提示「No such file or directory」
即使你手动输入了完整路径(如 /Users/yourname/Desktop/export.sql),Navicat 仍可能因权限不足而创建失败 —— macOS 不允许应用自行创建新目录,只能写入已有且已授权的路径。
- 确保目标目录已存在,且 Navicat 有写权限(例如
~/Desktop通常 OK,但/opt或/usr下绝大多数路径不行) - 导出前,先在 Finder 中手动创建好目标文件夹(如
~/Projects/navicat_exports),再在 Navicat 导出对话框中选择该空文件夹 - 不要尝试导出到挂载的网络盘或加密卷(如 APFS 加密卷),Navicat 对这类路径支持极不稳定
最易被忽略的一点:「完全磁盘访问」授权后,必须彻底退出 Navicat(Activity Monitor 里确认无 Navicat 进程),再重新启动,否则新权限不会加载。











