[Bug0045]MySQL 8.0 Public Key Retrieval is not allowed 错误解决方式

1、问题

使用DBeaver连接MySQL 8.0报错 Public Key Retrieval is not allowed

2、场景

电脑开发环境迁移初始化 mysql 后使用DBeaver连接不上

3、原因

查阅网上资料得到是密码认证机制的问题,

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

4、解决方案

方案一:

客户端的驱动连接参数中修改:allowPublicKeyRetrieval=true

具体步骤如下图

方案二:(未验证)

之前我在修改mysql的root用户的时候直接使用的语句是:alter user 'root'@'localhost' identified by 'xxx'; 其他人描述mysql默认使用sha_256加密了。

现在修改mysql账号的密码,使用其他的加密方式,直接修改账号密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxx';

另外,修改用户host语句附上:

use mysql;

update user set host='%' where user='root';

参考资料

posted @ 2022-08-30 22:32  Code7Rain  阅读(208)  评论(0编辑  收藏  举报