java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed]
时间: 2025-04-24 18:12:09 浏览: 90
### Java SQL 连接异常 `Public Key Retrieval is not allowed` 的解决方案
当遇到 `java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed` 错误时,表明 JDBC 驱动程序在尝试建立数据库连接时遇到了公钥检索问题。此问题常见于 MySQL 8 及更高版本。
#### 修改连接 URL 参数
为了允许公钥检索,在连接字符串中添加 `allowPublicKeyRetrieval=true` 参数可以解决问题[^3]:
```properties
url=jdbc:mysql://localhost/blog?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
```
#### 关闭 SSL 加密
如果应用程序不需要加密通信,则可以通过设置 `useSSL=false` 来禁用 SSL/TLS 协议,从而避免与公钥验证有关的问题[^4]:
```properties
url=jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true
```
#### 更新驱动器版本
确保使用最新版的 MySQL Connector/J,因为旧版本可能存在兼容性问题或者缺少必要的修复补丁[^5]。
#### 数据库端配置调整
确认 MySQL Server 是否已正确设置了 RSA 密钥对用于身份认证机制;必要情况下重新生成并分发新的私钥给客户端应用服务器[^1]。
通过上述方法之一应该能够有效处理该类异常情况的发生。建议优先考虑修改连接 URL 方案作为临时措施,并进一步评估长期的安全策略以决定是否继续沿用这些更改选项。
阅读全文
相关推荐

















