navicat 连接 mysql 8.0 失败主因是认证插件不兼容:mysql 8.0 默认用 caching_sha2_password,而 navicat 14 及更早版本不支持,需升级至 15.0.12+ 或执行 alter user 修改用户认证方式为 mysql_native_password。
navicat 连接 mysql 8.0 失败,大概率是认证插件不兼容
mysql 8.0 默认使用 caching_sha2_password 认证插件,而 navicat 14 及更早版本(比如 11.x、12.x)内置的客户端库不支持该插件,连接时直接报错 error 2059 (hy000): authentication plugin 'caching_sha2_password' cannot be loaded 或类似提示。这不是密码错、端口错或服务没启的问题,而是底层认证协议断层。
Navicat 版本决定要不要改 MySQL 配置
如果你用的是 Navicat Premium 15.0.12+(含 Lite 免费版),它原生支持 caching_sha2_password,只要 MySQL 服务正常、账号有远程权限、防火墙放行 3306 端口,就能直连,无需任何修改。
- 确认方式:打开 Navicat → 新建连接 → 填写主机、端口、用户名、密码 → 点击「连接测试」,成功即止
- 若失败,先检查 Windows 服务里
MySQL80是否「正在运行」;Linux/macOS 执行sudo systemctl status mysql - 远程连接失败?需确保 MySQL 用户 host 是
%或对应 IP,且执行过GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'xxx'; FLUSH PRIVILEGES;
旧版 Navicat(如 11.x / 12.x / 14.x)必须改认证方式
不能只改配置文件里的 default_authentication_plugin,那仅影响新用户;已存在的 root 或其他用户仍会沿用旧插件,必须显式重置。
- 在 MySQL 命令行中执行(注意替换
'your_password'):ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
- 如果是远程连接,把
'localhost'改成实际连接来源,比如'%'或具体 IP - 执行
FLUSH PRIVILEGES;生效 - Windows 下若提示
mysql不是内部命令,说明没配环境变量,需手动进入C:\Program Files\MySQL\MySQL Server 8.0\bin目录再运行mysql -u root -p
改完还连不上?重点排查这三处
很多人改了认证插件却仍失败,问题常出在细节:
-
root用户默认只允许localhost连接,远程要用'root'@'%'并显式授权,不能只改本地用户 - MySQL 安装时若选了「Use Legacy Authentication Method」,那 root 默认就是
mysql_native_password,但其它用户可能不是,仍需单独改 - Navicat 连接设置里勾了「SSH 隧道」但没填 SSH 信息,会导致连接卡住或超时,确认不需要 SSH 就取消勾选
改认证插件是临时绕过方案,长期建议升级 Navicat 到 15+,避免后续遇到 JSON 字段解析异常、窗口函数语法报错等兼容性问题。











