SQLException : SQL state: 08001 java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed ErrorCode: 0
时间: 2024-05-12 14:11:01 浏览: 319
java.sql.SQLException: null, message from server: “Host ‘%’ is not allowed to connect to
SQLException : SQL state: 08001 java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed ErrorCode: 0是一个数据库连接异常,表示在尝试建立与数据库的连接时,公钥检索被禁止了。这个异常通常发生在使用MySQL数据库时,当连接字符串中的useSSL参数设置为false时,会出现这个问题[^1]。
解决这个问题的方法是在连接字符串中启用SSL,或者在连接字符串中添加allowPublicKeyRetrieval参数并将其设置为true。具体的解决方法取决于你使用的数据库驱动程序和连接库的版本。
以下是一个使用JDBC连接MySQL数据库的示例代码,其中包含了解决这个问题的方法:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseConnection {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/enterprise_digital?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
String username = "your_username";
String password = "your_password";
try {
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println("Connected to the database successfully!");
// 进行其他数据库操作
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
请注意,上述代码中的url变量中添加了allowPublicKeyRetrieval=true参数来解决公钥检索被禁止的问题。
阅读全文