sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
时间: 2023-10-18 17:28:48 浏览: 192
java.sql.SQLNonTransientConnectionException(解决方案).md
sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed是一个数据库连接错误,它表示在连接MySQL数据库时,公钥检索被禁止。
这个错误通常在使用MySQL 8.x版本时出现。产生这个错误的原因是因为MySQL 8.x版本默认使用了新的身份验证插件caching_sha2_password,而旧版本的MySQL JDBC驱动程序不支持这个插件。
解决这个问题的方法是更新MySQL JDBC驱动程序到最新的版本,或者在连接字符串中明确指定使用旧版的身份验证插件mysql_native_password。具体步骤如下:
1. 首先,确保你的项目中使用的是最新版本的MySQL JDBC驱动程序。
2. 如果你使用的是Maven或Gradle管理项目依赖,可以在pom.xml或build.gradle文件中添加相应的依赖项来引入最新版本的MySQL JDBC驱动程序。
3. 如果你的项目没有使用构建工具,可以手动下载最新版本的MySQL JDBC驱动程序,并将其添加到项目的类路径中。
4. 在连接数据库的代码中,修改连接字符串,将使用的身份验证插件指定为mysql_native_password。例如:
```java
String url = "jdbc:mysql://localhost:3306/mydatabase?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&autoReconnect=true&allowPublicKeyRetrieval=true&useSSL=false";
Properties info = new Properties();
info.setProperty("user", "myuser");
info.setProperty("password", "mypassword");
info.setProperty("useSSL", "false");
info.setProperty("allowPublicKeyRetrieval", "true");
info.setProperty("useSSL", "false");
info.setProperty("characterEncoding", "utf-8");
info.setProperty("serverTimezone", "GMT+8");
info.setProperty("autoReconnect", "true");
info.setProperty("useSSL", "false");
info.setProperty("allowPublicKeyRetrieval", "true");
Connection conn = DriverManager.getConnection(url, info);
```
在连接字符串中加入allowPublicKeyRetrieval=true参数即可解决这个问题。
通过更新MySQL JDBC驱动程序版本或者指定使用旧版身份验证插件,你应该能够成功解决sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed](https://blog.csdn.net/qq_47433566/article/details/123581123)[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* [JDBC 报错 java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed](https://blog.csdn.net/weixin_30298497/article/details/101414048)[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* [基于JavaWeb学生宿舍管理系统毕业设计项目源码(完美注释+高分必看).zip](https://download.csdn.net/download/weixin_55305220/85624213)[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 ]
阅读全文