不能直接导出.navicat_project或.npz文件,因其XML内容明文暴露host、port、user、ssh_host等敏感元数据,解压即可获取完整内网拓扑;安全做法是新建无密码连接→导出为XML→手动清理password等敏感节点后再分发。

不能直接发 .navicat_project 或 .npz 文件,否则等于把数据库的 host、port、user 全部明文暴露给所有人,密码虽加密但本地密钥不可控,极易被解包利用。
为什么不能用 Export Project 导出连接?
Navicat 的 Export Project 生成的是 .npz 包,内部结构是 ZIP 压缩 + AES-256 加密密码字段,但以下内容全部明文可见:
prod-db.internal 3306 app_rw jump.internal
一旦有人用 7-Zip 解压 .npz,再用文本编辑器打开 XML 片段,就能拿到完整网络拓扑和账号名——配合内网地址,攻击链路就齐了。更糟的是,同一 .npz 在不同机器上可能解不开密码,导致新员工连不上还查不出原因。
怎样导出安全可分发的连接模板?
目标是:参数统一、密码隔离、零明文敏感字段。操作只需三步:
- 新建一个空白 MySQL 连接 → 填入
host、port、username、database(**不填密码**)→ 点“测试连接”后立刻点Cancel(千万别点Save) - 右键该连接 →
Export Connection→ 保存为template.mysql.xml(注意后缀必须是.xml,不是.npz) - 用文本编辑器打开该 XML,删掉所有含
、、的整行节点
清理完的 XML 可放心发 Slack 或 Git 仓库,每人导入后手动填自己密码即可。这样 host=prod-db.internal 被强制统一,没人能手输成 prod-db-internal 这类低级错误。
Navicat 17 的 URI 方案适合什么场景?
URI 是快速共享带密连接的捷径,但只适用于可信小团队或临时调试,不适合入职分发:
- URI 字符串里密码是明文占位符,如
mysql://app_rw:,发出去就得同步提醒所有人把@prod-db.internal:3306/app?charset=utf8mb4 换成真实密码——漏换一个就失败 - URI 不校验
host是否可达,也不提示 SSH 隧道配置缺失,新人容易卡在第一步 - 它无法约束连接命名规范,A 导入叫“生产库”,B 导入叫“prod”,后续协作查日志时根本对不上
真正要批量入职分发,XML 模板 + 手动填密仍是目前最可控的方式。最容易被忽略的点是:导出前没取消“测试连接”弹窗里的保存动作,结果 XML 里偷偷塞进了你本地缓存的密码字段——务必检查导出后的 XML 是否真没 标签。











