MySQL 8.0 java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
对于这个报错,网上的大多数建议是
1.在连接字符串中添加一个参数 allowPublicKeyRetrieval=true
来解决
但是,allowPublicKeyRetrieval=true
可能会带来安全风险,因为它允许客户端在不进行身份验证的情况下连接到服务器
2.更改 MySQL 服务器的配置以允许公钥检索。
但是,使用公钥检索可能会带来安全风险,因此需要确保使用的是完全信任的网络环境,并且不需要SSL加密
根本原因:
jdbc 配置的连接参数缺少了 “ useSSL ”或者 “ useSSL = false”
所以,更完善的解决方案:
在 jdbc 配置的连接参数中加入 useSSL=true
如:
jdbc:mysql://127.0.0.1:3306/test_dev?useUnicode=true&characterEncoding=utf-8&useSSL=true