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';
标签:8.0,Bug0045,allowed,使用,密码,mysql,MySQL,root,Public
From: https://www.cnblogs.com/Code-Rain/p/16602810.html