.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed
时间: 2023-11-28 16:45:33 浏览: 319
这个错误通常是由于MySQL 8.0版本以上的驱动程序默认启用了SSL,而且需要使用公钥加密来检索数据。如果MySQL服务器未正确配置,则会出现此错误。解决此问题的方法是在JDBC URL中添加一个参数,以允许使用旧的不安全的公钥检索方法。具体方法如下:
```java
String url = "jdbc:mysql://localhost:3306/mydatabase?useSSL=false&allowPublicKeyRetrieval=true";
```
在这个URL中,`useSSL=false`表示禁用SSL,`allowPublicKeyRetrieval=true`表示允许使用旧的不安全的公钥检索方法。如果你使用的是Spring Boot,可以在`application.properties`文件中添加以下配置:
```
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?useSSL=false&allowPublicKeyRetrieval=true
```
这将覆盖默认的JDBC URL并解决该问题。
相关问题
com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed.
com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed 是一个MySQL连接异常,表示无法进行公钥检索。这个异常通常发生在使用MySQL连接时,当MySQL服务器配置不允许进行公钥检索时会抛出该异常。
公钥检索是一种安全机制,用于验证与MySQL服务器的连接。当MySQL服务器配置为不允许公钥检索时,客户端无法获取服务器的公钥,从而导致连接失败。
要解决这个问题,可以尝试以下几种方法:
1. 检查MySQL服务器的配置:确保MySQL服务器允许进行公钥检索。可以通过修改MySQL服务器的配置文件(如my.cnf)来启用公钥检索。
2. 更新MySQL驱动程序:如果您正在使用的是旧版本的MySQL驱动程序,尝试升级到最新版本,以确保与MySQL服务器的兼容性。
3. 使用用户名和密码进行连接:尝试使用用户名和密码进行连接,而不是使用公钥验证。可以在连接字符串中指定用户名和密码来进行连接。
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 ]
阅读全文