java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed a
时间: 2023-10-20 08:27:53 浏览: 46
这个异常表示在尝试建立与数据库的连接时,不允许进行公钥检索操作。这通常发生在使用JDBC驱动程序连接到数据库。
出现这个异常的原因可能是数据库配置不正确或者数据库服务器不允许公钥检索操作。为了解决这个问题,你可以尝试以下几个步骤:
1. 检查数据库连接字符串:确保连接字符串中的相关配置参数(如URL、用户名、密码)正确无误。
2. 检查数据库服务器配置:查看数据库服务器是否启用了公钥检索功能,如果没有,则需要启用该功能。具体的配置方法可能因数据库而异,请查阅相应数据库的官方文档。
3. 更新JDBC驱动程序:尝试使用最新版本的JDBC驱动程序,以确保驱动程序支持公钥检索操作。
4. 检查防火墙和网络设置:确保数据库服务器端口可访问,并且网络连接正常。
如果尝试了以上步骤后仍然无法解决问题,建议查看数据库相关的错误日志或联系数据库管理员进行进一步的排查和解决。
相关问题
java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed 是一个Java数据库连接异常,意味着连接MySQL数据库时不允许公钥检索。为了解决这个问题,可以尝试以下几种方法:
1. 修改MySQL数据库连接字符串URL,在末尾追加 "?allowPublicKeyRetrieval=true" 参数,例如:
String url = "jdbc:mysql://localhost:3306/mydatabase?allowPublicKeyRetrieval=true&useSSL=false";
2. 如果使用的是Java 8及以上版本,可以将SSL模式设置为"false",即在JDBC驱动程序中通过添加一个额外属性来关闭SSL,例如:
String url = "jdbc:mysql://localhost:3306/mydatabase?sslMode=DISABLED";
这些方法可以帮助您解决 java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed 这个异常。
sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
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 ]