Navicat 链接 mysql 错误 (1251 – Client does not support authentication protocol requested by server )

一、解释

这个错误 1251 - Client does not support authentication protocol requested by server 的核心原因是:MySQL 服务端和 Navicat 客户端的认证协议不兼容

MySQL 8.0+ 的默认认证方式
MySQL 8.0 及以上版本,默认使用 caching_sha2_password 作为用户认证插件(更安全)。

旧版 Navicat 的兼容性问题
如果你用的是 较老版本的 Navicat,它可能只支持 MySQL 5.7 及以下的 mysql_native_password 认证方式,因此无法识别新的 caching_sha2_password,导致连接失败。

二、解决方案 

1、升级 Navicat(推荐,更安全)

直接更新 Navicat 到 最新版本,因为新版本已兼容 MySQL 8.0 的 caching_sha2_password 认证。

查看当前版本
打开 Navicat → 点击顶部菜单 帮助 → 关于,查看版本号。
升级 Navicat
访问 Navicat 官网 下载最新版,安装后重新尝试连接。

2、修改 MySQL 用户的认证方式

 步骤 1:登录 MySQL 服务端

mysql -u root -p

步骤 2:执行 SQL 命令修改认证方式

-- 示例:修改 root 用户(本地连接,主机为 localhost)的认证方式
ALTER USER 'root'@'localhost' 
IDENTIFIED WITH mysql_native_password BY '你的新密码';  

-- 刷新权限,使修改生效
FLUSH PRIVILEGES;  

参数说明

'root':你的 MySQL 用户名(如 rootadmin 等)。
'localhost':如果是远程连接(如 Navicat 连另一台电脑的 MySQL),需改为 '%'(允许所有主机连接),或指定具体 IP(如 '192.168.1.100')。
'你的新密码':设置新密码(后续 Navicat 连接时需用这个密码)。

步骤 3:重新连接 Navicat

关闭 Navicat 的连接窗口,重新输入:

主机:localhost(或实际 IP)

端口:3306(默认,若修改过则填实际端口)

用户名:root(或你的实际用户名)

密码:步骤 2 中设置的新密码
点击 “连接测试”,通常就能成功连接了。

三、额外注意事项

密码安全性
mysql_native_password 的安全性比 caching_sha2_password 低,生产环境建议优先升级 Navicat,而非长期使用这种方法。

远程连接的防火墙问题
如果是远程连接(Navicat 和 MySQL 不在同一台电脑),需确保:

MySQL 服务端开启了远程连接权限(通过 ALTER USER ... @'%' 配置)。
服务器的防火墙开放了 3306 端口(Windows 防火墙、Linux 防火墙等)。

MySQL 服务是否运行
连接前,检查 MySQL 服务是否正常启动(Windows 服务里找 MySQL,Linux 用 systemctl status mysql 查看)。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容