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

编程知识 更新时间:2023-04-05 19:43:43

文章目录

  • 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没有解决我的问题,我只能通过如下的方式解决该问题了。

  1. 首先找到mysqlbin目录,mysql bin目录的默认路径为:C:\Program Files\MySQL\MySQL Server xx \bin。在地址栏中输入cmd指令,如下图所示:

  1. cmd窗口,输入mysql数据库的用户名和密码,登录mysql数据库,如下图所示:

  1. 执行如下mysql查询用户信息的命令
SELECT
	HOST,
	USER,
	PLUGIN,
	authentication_string
FROM
	mysql.USER;

注意以下三点:

  1. host%表示不限制ip

  2. localhost表示本机使用

  3. pluginmysql_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,连接成功,如下图所示:

更多推荐

全网详细解决Client does not support authentication protocol requested by server;consid

本文发布于:2023-04-05 19:43:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/97855a79b70dc8e116ea70b9ce8ae9c5.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:详细   support   authentication   protocol   Client

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 47274文章数
  • 14阅读数
  • 0评论数