Underlying cause: java.sql.SQLNonTransientConnectionException : Public Key Retrieval is not allowed
时间: 2023-11-17 07:02:20 浏览: 207
记录因为yml而产生的坑:java.sql.SQLException: Access denied for user ‘root’@’localhost’ (using password: YES)
这个错误是由于MySQL连接驱动程序的默认设置更改所导致的。在MySQL 8.0.11之后的版本中,加密握手的默认设置已更改为“caching_sha2_password”,而不是以前的“mysql_native_password”。这可能会导致一些旧的应用程序无法连接到MySQL服务器并抛出“Public Key Retrieval is not allowed”异常。要解决此问题,可以尝试以下两种方法之一:
1. 在连接URL中添加“allowPublicKeyRetrieval=true”参数,例如:
```
jdbc:mysql://localhost:3306/mydatabase?allowPublicKeyRetrieval=true
```
2. 将MySQL用户的加密握手设置更改为旧的“mysql_native_password”,例如:
```
ALTER USER 'myuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypassword';
```
请注意,第二种方法可能会降低安全性,因此建议使用第一种方法。
阅读全文