Navicat连接配置不跨平台自动同步,因connections.ncx/nex文件使用系统用户密钥AES加密,路径与加密方式因macOS、Windows、Linux而异;导出连接功能可生成可移植的.ncx文件绕过密钥绑定,但需注意版本兼容、密钥管理启用及Linux环境变量设置。
navicat 的连接配置不跨平台自动同步,所谓“一键导出导入”本质是手动搬运加密文件 + 匹配环境密钥,直接复制文件大概率失败。
Navicat 连接配置存在哪几个物理位置
不同系统下,Navicat 把连接信息存成加密的 connections.ncx(旧版)或 connections.nex(v16+),但路径和加密方式完全不同:
- macOS:位于
~/Library/Application Support/PremiumSoft CyberTech/Navicat Premium/Profiles/下,每个配置文件夹对应一个「配置集」 - Windows:通常在
%APPDATA%\PremiumSoft\Navicat Premium\Profiles\,也可能在%LOCALAPPDATA%\PremiumSoft\Navicat Premium\Profiles\(取决于安装方式) - Linux:
~/.navicat/Profiles/,但 v16+ 默认禁用该路径,需手动启用或改配置
关键点:这些文件不是纯文本,而是用当前系统用户密钥 AES 加密的 —— 换平台、换用户、甚至重装系统后密钥失效,文件就打不开。
导出连接时为什么推荐用「导出连接」而非复制文件
直接复制 connections.nex 文件过去,90% 情况会报错 Invalid connection file 或打开后所有密码为空。因为:
- Navicat 的「导出连接」功能(右键连接 → Export Connection)会把密码用临时密钥加密,生成一个带 .ncx 后缀的可移植文件
- 这个文件在目标端导入时,会重新用本地密钥解密并写入新的
connections.nex,绕过原始密钥绑定 - 但注意:导出时不勾选
Include password,导入后密码字段就是空的 —— 不是 bug,是设计如此
示例操作流:右键连接 → Export Connection → 勾选 Include password → 保存为 myconn.ncx;另一台机器上 文件 → 导入连接 → 选择 myconn.ncx。
跨平台导入后密码为空?检查这三点
即使勾选了 Include password,导入后仍为空,常见原因:
- 源端和目标端 Navicat 版本差太大(如 v15 导出 → v17 导入),加密协议不兼容,建议两端都用 v16.1+ 稳定版
- 目标端开启了「使用操作系统密钥管理密码」(macOS Keychain / Windows Credential Manager),但当前用户未登录对应账户,导致解密失败
- Linux 端默认不启用密钥代理,需在启动前执行
export NAVICAT_USE_KEYCHAIN=1,否则跳过密码解密步骤
验证是否真解密成功:导入后立即测试连接,不要只看界面密码框 —— Navicat 有时会缓存旧密码状态,实际连接用的是解密后的凭证。
想真正“一键”,只能靠脚本预处理密钥环境
纯 GUI 操作做不到全自动,但可缩小差异面:
- macOS 和 Windows 都支持命令行导入:
navicat --import-connection myconn.ncx(需提前加到 PATH) - Linux 必须先运行
navicat --init-keychain初始化本地密钥环,否则后续所有导入都静默丢弃密码 - 批量迁移多个连接?别用「导出全部」—— 它会打包成单个文件但不保留分组结构;应逐个导出,用命名规则区分,比如
prod_mysql.ncx、dev_postgres.ncx
最易被忽略的一点:Navicat 的「配置集」(Profile)本身也加密,且和连接文件分离。如果用了多配置集(比如工作/个人分开),光导连接不够,还得同步 profiles.xml 并手动合并。











