com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed
时间: 2023-11-12 22:57:23 浏览: 55
这个异常通常是由于 MySQL 8.0 版本以上的 JDBC 驱动程序默认启用了 SSL/TLS 加密连接,但是在某些情况下,MySQL 服务器可能无法提供必要的证书或者 SSL/TLS 加密连接被禁用。为了解决这个问题,可以尝试以下两种方法:
1. 在 JDBC URL 中添加参数 `&allowPublicKeyRetrieval=true`,例如:
```
jdbc:mysql://localhost:3306/mydatabase?useSSL=false&allowPublicKeyRetrieval=true
```
2. 在 MySQL 服务器上启用 SSL/TLS 加密连接,具体方法可以参考 MySQL 官方文档。
相关问题
Could not get JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed
这个错误通常是由于 MySQL 8.0 版本引入了更严格的安全策略所致,其中默认情况下禁用了使用旧的加密方法。这可能会导致某些 JDBC 驱动程序无法建立安全连接,因此您需要更新您的 JDBC 驱动程序并使用新的安全连接选项。
您可以从 MySQL 官方网站下载 MySQL Connector/J 驱动程序的最新版本,并将其替换为旧版本的驱动程序。如果您使用的是 Maven,可以更新您的 pom.xml 文件以使用最新版本的 Connector/J。
另外,您还可以在 JDBC 连接字符串中添加 `allowPublicKeyRetrieval=true` 选项来启用允许公钥检索的连接。例如:
```
jdbc:mysql://localhost:3306/mydatabase?allowPublicKeyRetrieval=true
```
这将允许使用旧的加密方法建立安全连接,但请注意这可能会降低安全性。
希望这些方法能帮助您解决问题。
com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed
com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed是一个数据库连接的错误,它意味着无法连接到MySQL数据库。解决这个问题的方法是在连接URL中添加一个参数allowPublicKeyRetrieval=true。具体的解决方案如下:
1. 在你的Java Spring Boot项目中,找到连接数据库的配置文件。
2. 在配置文件中的spring.datasource.url参数后添加allowPublicKeyRetrieval=true。例如:
jdbc:mysql://localhost:3306/mydatabase?allowPublicKeyRetrieval=true
注意:要根据你的具体数据库配置进行相应的修改。
这样做的原因是,当使用sha256_password认证方式时,密码在传输过程中必须使用TLS协议进行保护。但是,如果服务器的RSA公钥不可用,可以通过设置allowPublicKeyRetrieval=true参数来允许从服务器获取公钥。需要注意的是,开启此选项可能会导致中间人攻击获取到明文密码,因此默认情况下是关闭的,需要显式地开启。
希望以上解决方案能帮助你解决com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not](https://blog.csdn.net/weixin_44299027/article/details/131766486)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is no](https://blog.csdn.net/a13662080711/article/details/124837085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [解决Cause com.mysql.jdbc.exceptions.jdbc4.CommunicationsException](https://download.csdn.net/download/lj_70596/39157301)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]