navicat提示“连接凭据已被更改”根本原因是windows credential manager中存储的凭据过期或未同步,需手动触发重写:编辑连接→高级页临时启用ssh隧道→保存→再编辑→取消ssh→重新输入密码并勾选“记住密码”→测试连接,方可更新凭据。

Navicat 提示“连接凭据已被更改”,不是 Navicat 自己改了密码,而是它背后依赖的 Windows 凭据管理器(Windows Credential Manager)里存的密码过期或被同步策略覆盖了——尤其在域环境或启用了 Windows Hello 的机器上,这类提示高频出现,且无法通过 Navicat 界面直接刷新。
为什么 Navicat 会读不到更新后的凭据?
Navicat 在保存连接时,若勾选了「记住密码」,实际是把密码委托给 Windows Credential Manager 加密存储,而不是存在本地配置文件里。一旦系统密码变更、组策略强制重置凭据缓存、或用户 Profile 重建,Credential Manager 中对应条目(通常是 Generic Credentials 下以 Navicat 或 MySQL 开头的条目)就会失效或残留旧值。
- 打开
control.exe /name Microsoft.CredentialManager,切换到「普通凭据」,搜索Navicat或你的数据库类型关键词,大概率能看到状态为「已过期」或「未验证」的条目 - 即使你已在 Navicat 里重新输入密码并点「测试连接」成功,只要没手动触发「更新凭据存储」,下次启动或定时任务运行时仍会拉取旧缓存
- 域账户受 AD 密码策略影响时,Credential Manager 不会自动同步新密码,必须人工干预
怎么强制 Navicat 重写 Windows 凭据?
不能只靠删掉旧凭据再点「测试连接」——Navicat 默认不会主动写回新密码到 Credential Manager,得用「编辑连接 → 切换认证方式 → 再切回来」这个隐式触发动作:
- 右键目标连接 → 「编辑连接」→ 进入「高级」选项卡
- 临时勾选「使用 SSH 隧道」(哪怕不填任何 SSH 参数),点「确定」保存
- 再编辑一次连接,取消勾选「使用 SSH 隧道」,回到「常规」页,重新输入密码,勾选「记住密码」,点「测试连接」
- 此时 Navicat 会清空旧凭据并写入新条目;可返回 Credential Manager 验证是否出现新条目且状态正常
团队共用电脑时凭据总冲突怎么办?
多人共用一台 Windows 机器(如测试机、CI 构建节点),Credential Manager 是按用户 Profile 隔离的,但 Navicat 连接配置文件(.ncx)常被共享或 Git 同步,导致 A 用户保存的凭据对 B 用户完全不可见,B 打开就报「凭据已被更改」。
- 禁用「记住密码」:所有连接统一设为「不记住密码」,每次连接弹窗输入——适合权限管控严格的场景
- 改用连接字符串免密认证:例如 MySQL 配置
auth_plugin=mysql_native_password+ IP 白名单,配合skip-password模式(需服务端支持) - 用环境变量注入密码:Navicat 16.2+ 支持在连接参数中写
${MYSQL_PWD},再由启动脚本或系统级环境变量提供值,避免凭据落地
真正麻烦的不是提示本身,而是它背后混用了三套凭据体系:Navicat UI 层、Windows Credential Manager 层、MySQL 服务端 user@host plugin 层。任意一层不同步,都会表现为「凭据已更改」——所以排查时别只盯着 Navicat 设置,先去 Credential Manager 里看一眼真实状态。











