连接 Java - MySQL:排除“不允许公钥检索”异常
尝试建立与 MySQL 数据库的连接时使用 Java 连接器 8.0.11,开发人员可能会遇到“不允许公钥检索”异常。此错误发生在连接握手过程中,表示客户端(Java 应用程序)无权从服务器获取公钥进行身份验证。
异常原因
当 Java 应用程序尝试检索服务器的公钥时,会发生异常,该公钥用于加密和传输用户密码等敏感信息。默认情况下,MySQL 不允许检索公钥,以防止潜在的中间人 (MITM) 攻击。
解决方案
要解决此问题,Java 应用程序必须显式配置为在建立数据库连接时允许检索公钥。这可以通过将 allowedPublicKeyRetrieval=true 参数指定为 JDBC 连接字符串的一部分来实现。
以下是包含 allowedPublicKeyRetrieval 参数的 JDBC 连接字符串示例:
jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true
请注意如果连接不是通过安全通道进行的,则启用公钥检索会使客户端容易受到 MITM 攻击,从而带来潜在的安全风险(例如,HTTPS)。出于开发和测试目的,禁用 SSL 并在连接字符串中显式指定 useSSL=false 可能更安全:
jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true&useSSL=false
其他提示
如果问题尽管指定了allowPublicKeyRetrieval=true,但仍然存在,请尝试以下附加措施:
以上是为什么我的 Java 应用程序在连接到 MySQL 时抛出'不允许公钥检索”异常?的详细内容。更多信息请关注PHP中文网其他相关文章!