18
2024
07
09:54:37

MySQL8 因加密规则改变而出现的错误(Navicat DBeaver)

navicat链接数据库报2059问题

这个问题是我在网上clone项目因为mysql版本需要8.0以上的版本,于是我将自己的5.5版本的mysql换成了8.0版本的。后面测试本地链接的时候报2059。于是我上网查找资料原来是MySQL8版本它的默认认证加密规则是caching_sha2_password,因为navicat目前不支持caching_sha2_password加密, 如果我们想要用Navicat 去链接的话想要将mysql8版本的默认加密规则该为mysql_native_password。

解决方法:

1.cmd输入命令:mysql -u root -p 然后 Enter


2.输入数据库密码,然后Enter


3.执行这两个命令:use mysql 然后Enter,执行select user,plugin from user where user=’root’;命令,我们可以看到我们的加密方式是caching_sha2_password。这里由于本人的已经修改了就不贴出来了。


4.按顺序执行下面三个命令:

(1)修改默认的加密规则:ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;

(2)更新用户密码:ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;

(3)刷新权限:FLUSH PRIVILEGES;

注意:这里的password、root、localhost仅仅是我这边的,你要改为你自己的。


在使用 Navicat for Mysql连接mysql 8 时会报如下错误:

authentication plugin 'caching_sha2_password' cannot be loaded;

mysql8.0 引入了新特性 caching_sha2_password;这种密码加密方式客户端不支持;客户端支持的是mysql_native_password 这种加密方式;

解决办法

1.升级Navicat版本(自测Navicat15可以解决问题)

2.修改录密码加密规则还原mysql_native_password

方法:

以管理员身份运行 cmd,然后使用命令进入 mysql

mysql -uroot -proot

让密码永不失效

ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE

NEVER;

然后再更改密码,更改加密规则

ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY

‘新密码’;

最后在刷新一下数据库,如果不行的话重启下mysql服务

FLUSH PRIVILEGES;

在使用 DBEaver连接mysql 8 时会报如下错误:Public Key Retrieval is not allowed

1 修改DBEaver客户端将allowPublicKeyRetrieval 值设置为true

2 修改密码规则 ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY

‘新密码’;

备注:如果用户账号使用sha256_password认证,传输过程中必须保护密码;TLS 是首选机制,但如果它不可用,则将使用 RSA 公钥加密。要指定服务器的 RSA 公钥,请使用ServerRSAPublicKeyFile连接字符串设置,或设置AllowPublicKeyRetrieval=True为允许客户端自动从服务器请求公钥。请注意,这AllowPublicKeyRetrieval=True 可能允许恶意代理执行 MITM 攻击以获取明文密码,因此False默认情况下必须显式启用它。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/7168.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: