navicat跨平台迁移后密码必须重输,是因密码绑定系统级密钥(如windows credential manager/macos keychain),导出时仅用临时密钥加密密码并存入.ncx,导入时需目标设备本地密钥解密;但macos与windows密钥服务互不兼容,且换apple id、重装系统或v15及更早版本均导致解密失败;ssh路径、代理命令、字符集编码等配置也因系统差异需手动修正;navicat cloud同步不传输密码,仅传连接参数,故无法解决该问题。
navicat 跨平台迁移后密码必须重输,不是 bug,是加密机制决定的刚性限制——它根本没把明文密码存进 connections.ncx 文件,而是用系统级密钥(windows credential manager / macos keychain)加密绑定到原设备。
为什么导出的 .ncx 文件里“有密码”却连不上
导出时勾选 Include password,只是把密码用临时密钥加密后塞进文件;导入时 Navicat 会尝试用目标设备的本地密钥解密。但:
- macOS 和 Windows 的密钥管理服务互不兼容,Keychain 里的凭证无法在 Windows 上被 Credential Manager 识别
- 即使同是 macOS,换 Apple ID 登录或重装系统后,Keychain 访问权限重置,旧密钥失效
- v15 及更早版本压根不支持跨设备密码导出,勾选项是灰色禁用的
哪些配置项会因系统差异直接失效
除了密码,以下字段在跨平台导入后几乎必然要手动修正:
-
SSH 私钥路径:macOS 是~/.ssh/id_rsa,Windows 常为C:\Users\XXX\.ssh\id_rsa,路径字符串不兼容 -
代理命令(Proxy Command):macOS 默认用ssh(OpenSSH 9.0+),Windows Git Bash 自带的 ssh 版本可能不支持-W参数 -
字符集编码:Windows 导出时若用 GBK 存连接名,macOS 导入后显示为乱码或截断(v14 及更早尤甚)
Navicat Cloud 同步为什么也救不了密码
Cloud 同步只传连接参数和查询片段,密码仍走本地密钥加密链路:
- 同步开启但右下角状态栏显示
Syncing…或Paused→ 实际未完成传输 - macOS 上用 Apple ID 登录系统,Navicat 可能卡在系统级凭据授权环节,需手动退出账号重登
- 免费版 Cloud 限 2 台设备,第三台登录会踢掉最早的一台,导致密码缓存丢失
真正能绕过这套机制的,只有导出前用第三方工具(如 navicat_password_decrypt)提前解密并记录明文密码——但这一步必须在旧设备上操作,且要求你清楚当前 Navicat 版本对应的加密算法。迁移本身不难,难的是所有“自动”都不可信,每一步都得亲手确认密钥、路径、编码、同步状态是否真实就位。











