Navicat 15升级到16后连接丢失是因启用App Sandbox导致路径隔离:旧配置在~/Library/Application Support/,新版只读沙盒路径~/Library/Containers/;手动复制需先启动初始化目录、修复权限chmod -R 755、注意v15加密格式不被v16兼容,否则连接名可见但密码解密失败。

Navicat 15 升级到 16 后连接丢失,不是数据被删了,而是新版 Navicat 16(从 16.1.x 起)强制启用 macOS App Sandbox,导致它只读取沙盒路径 ~/Library/Containers/com.navicat.NavicatPremium/Data/Library/Application Support/,而旧版连接全存在非沙盒路径 ~/Library/Application Support/PremiumSoft CyberTech/Navicat CC/Common/Settings/0/0/——两者物理隔离,系统不迁移,Navicat 也不尝试兼容。
为什么直接复制 Settings 文件夹没用?
常见错误现象包括:启动 Navicat 16 后连接列表为空、新建连接能保存但旧连接完全不出现、导出连接时提示“无连接可导出”。根本原因有三点:
- 目标沙盒目录未初始化:
~/Library/Containers/com.navicat.NavicatPremium/Data/Library/Application Support/下的完整子路径(含PremiumSoft CyberTech/Navicat CC/Common/Settings/0/0/)在首次启动前并不存在,cp命令会静默失败或只建部分层级 - 权限不匹配:macOS 对
Containers目录有严格 ACL 控制,复制后 Navicat 进程无法读取文件,需手动修复 - 加密密钥不向下兼容:v15 的
servers文件使用旧加密格式,v16.1+ 默认无法解密,即使文件存在,也可能显示连接名但测试连接报密码错误
必须按顺序执行的恢复步骤
跳步=白忙。以下操作全部在终端中完成,且每步不可省略:
- 退出 Navicat,打开 Activity Monitor,确认无
NavicatPremium进程残留 - 启动一次 Navicat 16,新建一个测试连接并保存,然后退出——这会生成完整的沙盒目录结构
- 执行:
cp -R ~/Library/Application\ Support/PremiumSoft\ CyberTech/Navicat\ CC/Common/Settings/0/0/ ~/Library/Containers/com.navicat.NavicatPremium/Data/Library/Application\ Support/PremiumSoft\ CyberTech/Navicat\ CC/Common/Settings/0/0/ - 执行:
chmod -R 755 ~/Library/Containers/com.navicat.NavicatPremium/Data/Library/Application\ Support/PremiumSoft\ CyberTech/Navicat\ CC/Common/Settings/0/0/
如果恢复后仍提示密码错误怎么办?
这是 v15 → v16 加密升级最典型的静默失败表现。此时不要反复覆盖,应改用兼容路径还原:
- v16 实际支持双路径读取:它优先查沙盒路径,但若该路径下
Settings/0/0/为空或解密失败,会 fallback 到旧路径~/Library/Application Support/PremiumSoft CyberTech/Navicat CC/Common/Settings/0/0/ - 确保旧路径完整存在且未被误删(检查
ls -la ~/Library/Application\ Support/PremiumSoft\ CyberTech/Navicat\ CC/Common/Settings/0/0/) - 不要删除或重命名旧路径;v16 启动时若发现沙盒路径无效,会自动回退读取
- 如仍不行,可导出 v15 的连接为
.ncx文件,在 v16 中通过「文件 → 导入连接」重新加载(此方式绕过加密解密环节)
真正容易被忽略的点是:v16 不会告诉你它 fallback 了,也不会报错日志。你看到连接列表回来了,不代表密码能解密成功——务必用「测试连接」验证每个条目。如果只有部分连接可用,说明那些连接的 servers 文件来自更早版本(如 v14 或之前),需要单独处理或重输密码。











