最近因需要,把MySQL5.7更新到8.0版本,更新完成后用Navicat连接MySQL时出现如下提示:
1251- Client does not support authentication protocol requested by server;consider upgrading Mysql client
主要原因是MySQL服务器要求的认证插件版本与客户端不一致造成的!!
- 我们先打开cmd命令行,输入mysql -uroot -p密码,登录mysql
我们打开mysql命令行输入如下命令,查看系统用户对应的认证插件:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
- 执行SQL语句
select host,user,plugin,authentication_string from mysql.user;
- 可以看到root用户使用的plugin是caching_sha2_password,caching_sha2_password是8.0默认的认证插件,必须使用支持此插件的客户端版本。
- plugin的作用之一就是处理后的密码格式和长度是不一样的,类似于使用MD5加密和使用base64加密一样对于同一个密码处理后的格式是不一样的。
如果不希望更新本地客户端版本,想使用原来的环境来连接。就把mysql用户登录密码加密规则还原成mysql_native_password。
解决方法:将root的plugin改成mysql_native_password。
- 执行如下命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
- 修改root的密码为’新密码’,更改旧密码。
- 使用mysql_native_password对新密码进行编码。
- Navicat重新连接MySQL