mysql 连接出现 Public Key Retrieval is not allowed

本文讲述了在MySQL8.0及以上版本中遇到PublicKeyRetrievalisnotallowed错误的原因,主要涉及SSL安全要求。提供了两种解决方案:临时允许公钥检索和启用SSL并配置信任证书,同时强调生产环境中的数据安全性是首要考虑。
摘要由CSDN通过智能技术生成

在MySQL连接中出现“Public Key Retrieval is not allowed”错误,通常是因为在使用安全套接字层(SSL)连接时遇到了问题。这是因为MySQL 8.0及以上版本对安全性要求更高,特别是在使用密码插件如caching_sha2_password时,默认要求加密通信,并且不允许通过不安全的方式获取服务器的公钥。

解决这个问题的方法有以下几种:

  1. 允许公钥检索
    在客户端连接字符串或配置文件中设置 allowPublicKeyRetrieval=true。但请注意,这仅用于测试和临时解决方案,因为它会降低连接的安全性。在生产环境中应避免此做法,而是确保正确配置了SSL。
String url = "jdbc:mysql://yourserver:3306/database?useSSL=true&allowPublicKeyRetrieval=true&serverTimezone=UTC";
  1. 启用SSL并提供正确的信任证书

    • 在服务器端配置MySQL以支持SSL连接。
    • 客户端需要有与服务器匹配的CA证书,将其添加到客户端的信任存储中。
    • 更新客户端连接URL以包含SSL选项:useSSL=true 并可能需要指定 sslTrustStoresslTrustStorePassword 参数。
  2. 更改MySQL服务器上的用户密码插件
    如果你希望保持高安全性但又想简化连接过程,可以将MySQL服务器上的用户密码插件改为 mysql_native_password。这样,客户端无需进行复杂的SSL配置即可连接,但这意味着放弃了新版本MySQL默认提供的更强密码安全策略。

执行如下命令来更改用户密码插件:

ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;

请根据实际情况选择合适的方法解决问题,并始终优先考虑生产环境中的数据安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值