之前使用DBeaver数据库客户端连接MySQL是没问题的,一段时间没使用(不知道是不是更换了系统,之后重装了客户端的原因,反正是有所变动),再次连接数据库时竟然报错:

Public Key Retrieval is not allowed

什么意思呢?百度翻译一下:

不允许检索公钥

那这个“不允许检索公钥”到底是什么意思呢?这完全是,每个字我都认识,连在一起我竟然不知道是什么意思了。

我们打开mysqlconnector的官网:

https://mysqlconnector.net/connection-options/

直接使用翻译软件,翻译整个网页,找到“其它选项-允许公钥检索,AllowPublicKeyRetrieval”,我们看到它的默认值是false,查看描述:

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

意思呢大致就这个意思,具体的呢,咱也不用太关注,通过其它文章的介绍呢,在通过其它方式连接数据库的时候也会出现这种情况,而不只是通过DBeaver连接数据库。那这个时候解决方案也是一样的,就是将:AllowPublicKeyRetrieval=True 。

具体可以参考:关于JDBC连接数据库时出现的Public Key Retrieval is not allowed错误

当通过DBeaver连接数据库报这个错误的时候,我们如何解决呢?

右键点击你的数据库连接:

 

 会弹出“编辑连接”

 然后点击“驱动属性”

 将“allowPublicKeyRetrieval”设置为true。上面的图片是我修改之后的结果,改为true之后数据库就可以连接了。

支持,问题解决完毕。

总结:

右键数据库——》编辑连接——》驱动属性——将“allowPublicKeyRetrieval”设置为true

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐