MySQL8 :Public Key Retrieval is not allowed(解决方式)

当使用DBeaver连接MySQL8.0时,可能会遇到因sha256_password认证需要安全传输导致的报错。解决这个问题需要在连接字符串中添加`allowPublicKeyRetrieval=True`,或者指定服务器的RSA公钥文件。在DBeaver中,可以在数据库连接URL后添加`?allowPublicKeyRetrieval=True`,而在代码场景下,同样需要在连接字符串中包含此参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请标明出处:
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值