解决 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。仍然失败时,继续核对驱动版本、账号认证方式和连接参数。
评论 0
还没有公开评论。
评论已关闭,历史评论仍可阅读。