近日使用springboot和mysql开发java项目时,链接同事的数据库提示:java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed 是一个Java数据库连接异常,意味着连接MySQL数据库时不允许公钥检索。

导致“Public Key Retrieval is not allowed”原因

当禁用 SSL/TLS 协议传输后,客户端会使用服务器的公钥进行传输,默认情况下客户端不会主动去找服务器拿公钥,进而会出现错误。

为了解决这个问题,可以尝试以下几种方法:

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 这个异常。