java项目启动报错:java.sql.SOLNonTransientConnectionException Create breakpoint : Public Key Retrieval is not allowed,应该如何解决呢?

Public Key Retrieval is not allowed_mysql

解决办法:

在mysql数据库链接后面加上 allowPublicKeyRetrieval=true&useSSL=false 参数

举例:jdbc:mysql://localhost:3306/mydatabase?allowPublicKeyRetrieval=true&useSSL=false

&allowPublicKeyRetrieval=true&useSSL=false 这两个参数的作用是配置MySQL数据库连接时关于SSL/TLS安全连接的选项。

  1. allowPublicKeyRetrieval: 当设置为true时,允许客户端从服务器获取公钥。这通常与useSSL参数一起使用。在某些情况下,例如当MySQL服务器配置为使用SSL/TLS进行连接时,可能需要客户端验证服务器的证书。此时,客户端需要能够从服务器获取到公钥才能完成SSL握手过程。默认情况下,这个选项可能是关闭的,因为如果网络中存在中间人攻击(MITM),那么攻击者可能会通过拦截通信来获取这个公钥,从而威胁到整个SSL连接的安全性。只有在确定网络环境安全或者在本地开发环境中,才会建议启用此选项。
  2. useSSL: 当设置为false时,表示禁用SSL/TLS连接。这意味着客户端和服务器之间的通信将不会通过SSL/TLS加密。在某些情况下,如果数据库服务器没有正确配置SSL/TLS,或者在不需要加密的情况下,可以禁用SSL连接。然而,在生产环境中,除非有充分的理由,否则通常推荐使用安全的SSL/TLS连接来保护数据传输。

这两个参数通常出现在MySQL的JDBC连接字符串中,用于指导数据库驱动程序在建立连接时如何处理SSL/TLS通信。