赞
踩
在MySQL连接中出现“Public Key Retrieval is not allowed”错误,通常是因为在使用安全套接字层(SSL)连接时遇到了问题。这是因为MySQL 8.0及以上版本对安全性要求更高,特别是在使用密码插件如caching_sha2_password
时,默认要求加密通信,并且不允许通过不安全的方式获取服务器的公钥。
解决这个问题的方法有以下几种:
allowPublicKeyRetrieval=true
。但请注意,这仅用于测试和临时解决方案,因为它会降低连接的安全性。在生产环境中应避免此做法,而是确保正确配置了SSL。String url = "jdbc:mysql://yourserver:3306/database?useSSL=true&allowPublicKeyRetrieval=true&serverTimezone=UTC";
启用SSL并提供正确的信任证书:
useSSL=true
并可能需要指定 sslTrustStore
和 sslTrustStorePassword
参数。更改MySQL服务器上的用户密码插件:
如果你希望保持高安全性但又想简化连接过程,可以将MySQL服务器上的用户密码插件改为 mysql_native_password
。这样,客户端无需进行复杂的SSL配置即可连接,但这意味着放弃了新版本MySQL默认提供的更强密码安全策略。
执行如下命令来更改用户密码插件:
ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
请根据实际情况选择合适的方法解决问题,并始终优先考虑生产环境中的数据安全性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。