跳转到正文
返回文章列表

解决 MySQL 连接时的 Public Key Retrieval is not allowed 报错

更新于 2026-10-02 20:02

DBeaver 通过 JDBC 连接 MySQL 时,有时会遇到:

纯文本
Public Key Retrieval is not allowed

本文记录的环境是 Docker 中的 MySQL 8。容器本身不是直接原因,应先检查 JDBC 驱动的认证与安全连接配置。

原因与连接参数

某些认证流程需要客户端取得服务器的 RSA 公钥。Connector/J 的 allowPublicKeyRetrieval 默认值是 false,客户端不会默认通过额外握手自动获取公钥。

在可信的本地开发环境中,可以明确允许该行为:

纯文本
jdbc:mysql://localhost:3306/your_database?allowPublicKeyRetrieval=true

替换实际数据库名;如果 URL 已有参数,用 & 追加,不要再加 ?:

纯文本
jdbc:mysql://localhost:3306/your_database?characterEncoding=UTF-8&allowPublicKeyRetrieval=true

在 DBeaver 中设置

编辑对应连接,在 MySQL 驱动属性中查找 allowPublicKeyRetrieval,按开发环境需要设为 true,再重新连接。确认属性或 URL 参数应用到了实际使用的连接。

生产环境的处理

该参数不会自动建立经过身份校验的 TLS 连接。生产环境应按 Connector/J 的 SSL 文档配置证书、信任链和主机名校验;也可以按部署要求使用预先提供的服务器公钥。

不要为了处理这条报错,同时无依据地关闭 SSL。仍然失败时,继续核对驱动版本、账号认证方式和连接参数。

参考:Connector/J 安全属性及SSL 连接说明。

评论 0

还没有公开评论。

评论已关闭,历史评论仍可阅读。

留下评论

评论审核通过后公开。支持纯文本,最多 2000 个字符。