Windows MySQL_8.4.0 Navicat报错代码1251不支持认证协议解决方案
前言:
Navicat for MySQL 是管理和开发 MySQL 或 MariaDB 的理想解决方案。它是一套单一的应用程序,能同时连接 MySQL 和 MariaDB 数据库,并与 OceanBase 数据库及 Amazon RDS、Amazon Aurora、Oracle Cloud、Microsoft Azure、阿里云、腾讯云和华为云等云数据库兼容。这套全面的前端工具为数据库管理、开发和维护提供了一款直观而强大的图形界面。
环境:
1、Windows server 2016 —192.168.10.130
2、mysql-8.4.0-winx64.msi
3、Navicat_for_MySQL_10.1.7
4、Navicat_for_MySQL_12.0.29
问题描述:
1)此次我们部署的是mysql8.4,完成后添加变量可以正常通过自带客户端以及cmd进入数据库
2)之前部署的是5.7版本,对接Navicat_10.1.7,测试本地连接提示报错:1251 - Client does not support authentication protocol requested by server;consider upgrading MySQL client.
3)客户端不支持服务器请求的认证协议,建议升级mysql客户端,如下图
查看问题思路:
1、按报错提示可以升级Navicat12以及更高版本
2、MySQL8以上版本加密类型改变造成:
# mysql8之前版本加密规则是mysql_native_password,mysql8之后版本加密规则是caching_sha2_password
# 将mysql用户登录密码加密规则还原成mysql_native_password
mysql -uroot -p
mysql> use mysql
mysql> select host,user,plugin from user;
解决方案:
一、将Navicat10升级到Navicat_for_MySQL_12,完美解决。
二、mysql8版本的加密方式不同,所以将mysql用户登录密码加密规则还原成以前版本的mysql_native_password
# 使用命令行进入数据库
mysql -uroot -p
# 进入数据库 mysql
mysql> use mysql
# 将root用户加密方式修改为mysql_native_password并将数据库密码改为“123456”
参考命令:
# ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
# ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
# 'localhost'可以是'localhost'也可以通配符'%'允许所有
alter user 'root'@'%' identified by '123456' password expire never;
alter user 'root'@'%' identified with mysql_native_password by '123456';
# 刷新缓存
flush privileges;
# 再次查询用户信息,若是plugin该值为mysql_native_password,证明已经修改成功
mysql> select host,user,plugin from user;
# 返回Navicat老版本中连接mysql
# 连接成功
以上感谢,搬砖无止境…