前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL 8 Public Key Retrieval is not allowed 错误的解决方法

MySQL 8 Public Key Retrieval is not allowed 错误的解决方法

作者头像
猫头虎
发布2024-04-07 20:44:39
6.1K0
发布2024-04-07 20:44:39
举报
文章被收录于专栏:用户11053981的专栏

问题描述:

在使用 MySQL 8 时重启应用后提示 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed

最简单的解决方法是在连接后面添加 allowPublicKeyRetrieval=true

文档中(https://mysql-net.github.io/MySqlConnector/connection-options/)给出的解释是:

如果用户使用了 sha256_password 认证,密码在传输过程中必须使用 TLS 协议保护,但是如果 RSA 公钥不可用,可以使用服务器提供的公钥;可以在连接中通过 ServerRSAPublicKeyFile 指定服务器的 RSA 公钥,或者AllowPublicKeyRetrieval=True参数以允许客户端从服务器获取公钥;但是需要注意的是 AllowPublicKeyRetrieval=True可能会导致恶意的代理通过中间人攻击(MITM)获取到明文密码,所以默认是关闭的,必须显式开启

方案二:

在workbench里可以直接窗口配置,工具栏-server-user and privileges 里打开后会显示root @ localhost 未设置密码,然后自己设置一个密码就可以了

总结:

在MySQL 8中,出现"Public Key Retrieval is not allowed"错误通常是由于MySQL连接的加密设置引起的。这通常涉及到使用SSL/TLS进行加密连接,而客户端无法正确处理公钥检索。以下是解决此问题的一些方法:

修改连接参数: 在连接MySQL时,您可以尝试在连接字符串中添加allowPublicKeyRetrieval=true参数,以允许公钥检索。例如:

代码语言:javascript
复制
jdbc:mysql://localhost:3306/your_database?allowPublicKeyRetrieval=true

检查SSL/TLS设置: 如果您的MySQL服务器已配置为要求SSL/TLS连接,请确保您的客户端驱动程序支持并正确配置了SSL/TLS选项。您可能需要提供正确的SSL证书和密钥文件。

更新MySQL Connector/J驱动程序: 如果您正在使用Java连接MySQL数据库,确保您使用的是最新版本的MySQL Connector/J驱动程序。旧版本的驱动程序可能存在与加密相关的问题。

检查MySQL用户权限: 确保连接MySQL的用户具有足够的权限来进行SSL/TLS连接和公钥检索。您可以使用如下命令为用户授予这些权限:

代码语言:javascript
复制
GRANT USAGE ON *.* TO 'your_user'@'your_host' REQUIRE SSL;

查看MySQL错误日志: 查看MySQL服务器的错误日志,可能会提供有关问题的更多详细信息。您可以在日志中找到有关SSL/TLS连接和公钥检索的相关信息。

配置my.cnf文件: 如果您正在使用MySQL的CLI工具连接,您可以在my.cnf文件中添加以下配置,以允许公钥检索:

代码语言:javascript
复制
[mysql]
allowPublicKeyRetrieval=true

请注意,每种解决方法的适用性可能因您的具体情况而异。如果您仍然无法解决问题,可能需要进一步检查您的环境和配置,或者参考MySQL的官方文档和技术社区寻求帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述:
    • 最简单的解决方法是在连接后面添加 allowPublicKeyRetrieval=true
      • 方案二:
        • 总结:
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档