转载请标明出处:
https://bigmaning.blog.csdn.net/article/details/124457922
本文出自:【BigManing的博客】
报错现象
使用DBeaver连接mysql8时报错如下:
报错原因
官网连接: https://mysqlconnector.net/connection-options/#Other%20Options
翻译:
如果用户帐户使用sha256_密码认证,则在传输过程中必须保护密码;TLS是实现这一点的首选机制,但如果它不可用,则将使用RSA公钥加密。要指定服务器的RSA公钥,请使用ServersPublicKeyFile连接字符串设置,或设置AllowPublicKeyRetrieval=True,以允许客户端自动从服务器请求公钥。请注意,AllowPublicKeyRetrieval=True可能允许恶意代理执行MITM攻击以获取明文密码,因此默认情况下为False,所以必须自己显式启用。
解决办法
修改AllowPublicKeyRetrieval=True
DBeaver场景的解决办法
代码场景的解决办法
在数据库连接后面添加 allowPublicKeyRetrieval=True
jdbc:mysql://localhost:3306/book?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true