admin管理员组

文章数量:1794759

全网详细解决Client does not support authentication protocol requested by server;consider upgrading Mysql c

全网详细解决Client does not support authentication protocol requested by server;consider upgrading Mysql c

文章目录
  • 1. 复现错误
  • 2. 分析错误
  • 3. 解决错误

1. 复现错误

今天使用Navicat准备连接mysql,如下图所示:

点击连接测试按钮时,却报出如下错误:

即1251- Client does not support authentication protocol requested by server;consider upgrading Mysql client

2. 分析错误

正赶上最近ChatGPT比较火,借助它来分析我的问题,如下图所示:

ChatGPT说我版本太低,建议我升级客户端的版本,升级客户端的版本不太可能。因为,完全卸载mysql还是比较麻烦的。

因而,ChatGPT没有解决我的问题,我只能通过如下的方式解决该问题了。

  • 首先找到mysql的bin目录,mysql bin目录的默认路径为:C:\\Program Files\\MySQL\\MySQL Server xx \\bin。在地址栏中输入cmd指令,如下图所示:
  • 在cmd窗口,输入mysql数据库的用户名和密码,登录mysql数据库,如下图所示:
  • 执行如下mysql查询用户信的命令
  • SELECT HOST, USER, PLUGIN, authentication_string FROM mysql.USER;

    注意以下三点:

  • host为%表示不限制ip。

  • localhost表示本机使用

  • plugin非mysql_native_password,则需要修改密码

  • mysql8之前的版本中,加密规则是mysql_native_password。

    而在mysql8之后,加密规则是caching_sha2_password。

    解决该问题的方法,有以下两种:

    • 方法1:升级navicat驱动

    • 方法2:把mysql用户登录密码加密规则还原成mysql_native_password。

    升级navicat驱动很麻烦,因而,我采用方法2解决,具体操作步骤如下。

    3. 解决错误

    在命令行输入如下命令,修改密码:

    -- 更新user为root,host为% 的密码为123456 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; -- 更新user为root,host为localhost 的密码为123456 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

    或者

    -- 修改加密规则,这行我没有写,不过貌似也可以 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; -- 更新一下用户的密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; -- 刷新权限 FLUSH PRIVILEGES;

    再次在Navicat中连接mysql,连接成功,如下图所示:

    本文标签: 详细supportauthenticationprotocolClient