navicat for mysql 连接时报错:1251-Client does not support authentication protocol requested by server

今天在虚拟机上使用docker安装了mysql(默认拉取了最新的mysql版本),端口映射后再本地使用navicat for mysql连接的时候报错:

说是客户端不支持服务器要求的认证插件

进入mysql容器,输入如下命令查看系统用户对应的认证插件

可以看到当前版本root用户使用的plugin是caching_sha2_password,mysql官方网站有如下说明:

https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html

也就是说8.0的默认认证插件是caching_sha2_password,而不是之前的mysql_native_password. 使用8.0的mysql就必须使用支持此插件的客户端版本。
plugin的作用之一就是处理后的密码,不同的plugin处理后密码的格式和长度是不一样的,类似于使用MD5加密和使用base64加密,对于同一个明文处理后的格式是不一样的。

我们可以升级navicat驱动或者把mysql用户登录密码加密规则还原成mysql_native_password. 

这里采用第二种方式

mysql官方网站提供了从当前caching_sha2_password降级到mysql_native_password,我们可以仿照这个

在mysql服务端执行

#1.修改root的密码为'123456' 2.使用mysql_native_password对新密码进行编码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

修改后再使用客户端登录成功

发布了47 篇原创文章 · 获赞 12 · 访问量 5076

猜你喜欢

转载自blog.csdn.net/qq_35448165/article/details/103487090