解决java项目连接mysql报错~Public Key Retrieval is not allowed

问题产生原因

  • 一般是jdbc连接数据库时出现的场景
  • 曾经更换过mysql也可能出现此问题,常见于mysql5.7及8以上版本
  • 当禁用 SSL/TLS 协议传输后,客户端会使用服务器的公钥进行传输,默认情况下客户端不会主动去找服务器拿公钥,进而会出现错误。
  • 当前用户在服务器端没有登录缓存的情况下,客户端没有办法拿到服务器的公钥。

问题解决

  • 在 JDBC 连接串后加入&allowPublicKeyRetrieval=true参数即可解决

PS:配合食用更佳Expression #1 of SELECT list is not in GROUP BY clause问题解决