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

客户端使用navicat for mysql。本地安装了mysql 8.0。可是在连接的时候提示:mysql

主要缘由是mysql服务器要求的认证插件版本与客户端不一致形成的。sql

打开mysql命令行输入以下命令查看,系统用户对应的认证插件:服务器

能够看到root用户使用的plugin是caching_sha2_password,mysql官方网站有以下说明:网站

意思是说caching_sha2_password是8.0默认的认证插件,必须使用支持此插件的客户端版本。编码

plugin的做用之一就是处理后的密码格式和长度是不同的,相似于使用MD5加密和使用base64加密同样对于同一个密码处理后的格式是不同的。加密

解决方法:插件

我不但愿更新本地的客户端版本,想直接使用原来的环境来连接。命令行

解决方法是将root的plugin改为mysql_native_password。至关于降了一级。base64

mysql官方网站提供了从mysql_old_password升级到mysql_native_password,咱们能够仿照这个。官方原文以下:plugin

这里改为:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

这行代码有两层含义,第一:修改root的密码为'root',摒弃原来的旧密码。第二:使用mysql_native_password对新密码进行编码。

 

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


补充:

若是在修改插件的时候出现错误,可现将插件改成 mysql_old_password,而后再升级成mysql_native_password,方法: