一、问题
在使用 Mybatis 操作数据库时,在单元测试时出现了这个问题
Cause: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
这个报错的意思是:不允许公开密钥检索
这是 Mysql 连接超时的错误,根据异常信息提示,可能是由于连接字符串URL中缺少”allowPublicKeyRetrieval=true”参数导致的。
二、解决方法
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";
这样就不需要”allowPublicKeyRetrieval=true”参数选项了。