解决NavicatPremium连接MySQL8.0报错1251的问题分析⼈闲太久,努⼒⼀下就以为是在拼命。
⼀、问题
Navicat Premium连接MySQL 8.0报错:
1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
⼆、原因
MySQL 8.0改变了密码认证⽅式。
在MySQL 8.0之前版本的密码认证⽅式为:
mysql_native_password
为了提供更安全的密码加密⽅式,从MySQL 8.0版本开始,默认使⽤密码认证⽅式为:
caching_sha2_password
报错1251的原因也很明显:
Client does not support authentication protocol requested by server;
翻译为中⽂就是:“客户端不⽀持服务端请求的认证协议”。
我这⾥⽤的Navicat Premium 11去连接MySQL 8.0,因为版本太低,所以不⽀持caching_sha2_password的密码加密⽅式!!
在MySQL命令⾏终端,可以查看版本以及默认密码认证⽅式:
root@程序员的⼀天:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.
mysql>
mysql>
# 查看版本
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.21 |root的初始密码
+-----------+
1 row in set (0.00 sec)
mysql>
mysql>
# 查看默认加密⽅式
mysql>
mysql> use mysql;
Database changed
mysql>
mysql> select host, user, plugin from user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | root | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)
mysql>
可以看到,MySQL 8.0默认全部⽤户的密码加密⽅式都是caching_sha2_password。
三、解决
解决这个问题,有两种⽅法。
⽅法1:修改MySQL 8.0的密码认证⽅式。
⽅法2:安装新版本Navicat Premium。
两种⽅法都可⾏,但是加密规则最好不要乱改,很容易出问题。所以,推荐使⽤“⽅法2”。
3.1、修改MySQL 8.0密码认证⽅式
MySQL命令⾏终端分别执⾏以下操作:
# 更新root⽤户的密码为"123456",
# 注意,这⾥需要将"123456"换成⾃⼰的密码,请勿使⽤弱密码!
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新权限,使密码更新⽣效
FLUSH PRIVILEGES;
简单演⽰⼀下:
第⼀步:进⼊mysql命令⾏终端。
root@ed2a490912e5:/# mysql -u root -p
Enter password:
mysql>
第⼆步:查看默认密码认证⽅式。
mysql> use mysql;
mysql> select host, user, plugin from user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | root | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)
mysql>
可以看到,root⽤户密码认证⽅式为caching_sha2_password。
第三步:修改root⽤户密码认证⽅式,如果是其他⽤户,root替换为其他⽤户名即可。等同于更新⼀下密码!mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.05 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.04 sec)
第四步:再次查看root⽤户密码认证⽅式。
mysql> select host, user, plugin from user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | root | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | mysql_native_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)
注意看,root⽤户密码认证⽅式变成了mysql_native_password。
再次使⽤Navicat Premium 11连接MySQL 8.0,连接成功!
再次提⽰,修改密码认证⽅式,很容易出问题,不推荐!
3.2、安装新版本Navicat Premium
经我测试,Navicat Premium 12及以上版本均⽀持MySQL 8.0连接。最新版本是Navicat Premium 15,官⽹下载地址:
安装很简单,运⾏安装包,根据提⽰⼀步⼀步安装即可。遗憾的是Navicat Premium不是免费软件,永久许可证价格⽐较昂贵… …官⽹报价:⼈民币 4,449.0 元,企业版甚⾄上万了。贫穷,让我流下眼泪,
哭唧唧
好在可以破解
具体可以参考:
免责申明:仅供技术交流,如产⽣法律纠纷与本⼈⽆关。如有侵犯版本,联系删除!
附上⼀张效果图:
到此这篇关于Navicat Premium 连接 MySQL 8.0 报错“1251”分析解决的⽂章就介绍到这了,更多相关Navicat Premium 连接 MySQL 8.0 报错内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论