95%的Navicat连接失败是因MySQL 8.0默认使用caching_sha2_password认证插件,而Navicat 12及更早版本仅支持mysql_native_password;需用SELECT确认plugin类型,再执行ALTER USER指定host和密码并FLUSH PRIVILEGES生效。

MySQL 8.0 默认用了 caching_sha2_password,旧版 Navicat 不认识
这不是密码错了,也不是网络不通,而是 MySQL 8.0 启动时就给 root 用户配了个新“锁”——caching_sha2_password 插件,而 Navicat Premium 12 或更早版本内置的 MySQL 驱动只认老“钥匙”mysql_native_password。握手阶段一碰面,客户端直接报错:Authentication plugin 'caching_sha2_password' cannot be loaded(错误代码 2059)。
ALTER USER ... IDENTIFIED WITH mysql_native_password 是最直接的修复动作
登录 MySQL 命令行后,必须对具体用户执行该语句,不能只改配置文件或只改新用户默认行为:
-
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';—— 必须指定@'localhost'或实际连接来源(如@'%'),否则可能改错用户 -
FLUSH PRIVILEGES;—— 这步不能省,否则修改不生效 - 如果用的是远程连接(比如 Navicat 填的是服务器 IP),要确认
user表里对应的是'root'@'192.168.x.x'还是'root'@'%',查一下:SELECT Host,User,plugin FROM mysql.user;
改完还要验证插件是否真切换成功
执行完 ALTER USER 后别急着回 Navicat 测试,先确认变更已落地:
- 查当前用户插件:
SELECT plugin FROM mysql.user WHERE User='root' AND Host='localhost';—— 返回结果必须是mysql_native_password - 查全局默认插件:
SHOW VARIABLES LIKE 'default_authentication_plugin';—— 这个值不影响已有用户,只是控制后续新建用户的默认行为 - 如果返回仍是
caching_sha2_password,说明ALTER USER没执行成功,或用户 Host 匹配不上
Navicat 15+ 能原生支持 caching_sha2_password,但得关掉 SSL 强制要求
升级 Navicat 到 15 或更高版本后,理论上可直连 MySQL 8.0,默认走新插件。但实践中常卡在第二道门槛:MySQL 8.0 新用户若启用了 REQUIRE SSL,而 Navicat 连接配置里没开 SSL,会静默失败或报其他连接异常。解决方法:
- 建用户时避免加
REQUIRE SSL,例如:CREATE USER 'dev'@'%' IDENTIFIED WITH caching_sha2_password BY 'pwd'; - 或显式取消 SSL 要求:
ALTER USER 'dev'@'%' REQUIRE NONE; - Navicat 连接设置中,“SSL”页签选 “No SSL”,不要留空或选 “Auto”
真正容易被忽略的是 Host 匹配粒度和 FLUSH PRIVILEGES 的必要性——很多操作看似执行成功,但没刷新权限或 Host 写错,导致 Navicat 仍连向旧认证路径。


















