Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed
时间: 2023-10-14 16:56:19 浏览: 202
这个错误通常是由于 MySQL 连接配置问题引起的。当使用旧版本的 MySQL JDBC 驱动程序连接到 MySQL 8.0 或更新版本时,可能会出现此错误。
解决此问题的方法是在连接 URL 中添加一个参数来启用公钥检索。在连接 URL 中添加 `allowPublicKeyRetrieval=true` 参数,例如:
```
jdbc:mysql://hostname:port/database?allowPublicKeyRetrieval=true
```
请确保将 `hostname` 替换为实际的主机名,`port` 替换为 MySQL 服务器的端口号,`database` 替换为要连接的数据库名称。
如果您正在使用 Spring Boot 或其他框架,可以在配置文件中设置以下属性来解决此问题:
```
spring.datasource.url=jdbc:mysql://hostname:port/database?allowPublicKeyRetrieval=true
```
请记住,确保您正在使用与 MySQL 8.0 或更新版本兼容的 JDBC 驱动程序。您可以从 MySQL 官方网站下载最新的驱动程序,并将其添加到您的项目中。
相关问题
Caused by: com.mysql.cj.exceptions.CJException: Public Key Retrieval is not allowed
Caused by: com.mysql.cj.exceptions.CJException: Public Key Retrieval is not allowed是数据库连接问题。解决这个问题的方法是在spring.datasource.url后面添加allowPublicKeyRetrieval=true参数。这个参数允许从MySQL服务器检索公钥。可能的原因是MySQL服务器配置不允许检索公钥,而在连接中却需要使用公钥。
Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed
这个错误通常是由于 MySQL 8.0 版本默认启用了 SSL 和 RSA 验证,而 Java 连接器默认情况下不支持这种验证方式所致。解决方法是在 JDBC 连接字符串中添加 `allowPublicKeyRetrieval=true` 参数,例如:
```
jdbc:mysql://localhost:3306/mydatabase?allowPublicKeyRetrieval=true
```
另外,还需要在 MySQL 中创建一个具有 SSL 和 RSA 验证权限的用户,或者禁用 SSL 和 RSA 验证。具体操作请参考 MySQL 官方文档。
阅读全文
相关推荐











