【MySQL系列】Public Key Retrieval is not allowed
作者:mmseoamin日期:2024-04-01

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

【MySQL系列】Public Key Retrieval is not allowed,img,第1张

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

      非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

      • 1. 问题背景
      • 2. 错误原因
      • 3. 解决方案
        • 3.1. 在 JDBC 连接串中加入 useSSL=false 参数
        • 3.2. 在 JDBC 连接串中加入 allowPublicKeyRetrieval=true 参数
        • 4. 结语

          解析禁用 SSL/TLS 协议传输导致的公钥检索问题

          在网络通信中,安全性是至关重要的,尤其是在数据传输涉及敏感信息时。SSL/TLS 协议是保障数据传输安全的重要手段之一。然而,在一些特定场景下,禁用 SSL/TLS 协议传输可能会引发一系列问题,其中之一便是“Public Key Retrieval is not allowed”(公钥检索不被允许)的错误。本文将探讨此错误的原因、可能遇到的场景以及解决方案。

          【MySQL系列】Public Key Retrieval is not allowed,image-20240324124142510,第2张

          1. 问题背景

          “Public Key Retrieval is not allowed”错误通常在客户端与服务器端的通信中出现。当 SSL/TLS 协议被禁用时,客户端无法通过正常的方式获取服务器的公钥,因而引发此错误。这个问题的根源在于,客户端在没有 SSL/TLS 协议的保护下,无法主动获取服务器的公钥,而服务器端也不会主动提供。这一情况可能出现在以下场景:

          • 新建数据库用户,首次登录;
          • 数据库的用户名、密码发生改变后登录;
          • 服务器端调用 FLUSH PRIVELEGES 指令刷新服务器缓存。

            2. 错误原因

            这一错误的产生主要是由于 SSL/TLS 协议的禁用所致。在安全的 SSL/TLS 通信中,客户端可以通过 SSL 握手过程获取服务器的公钥,从而确保通信的安全性。然而,当 SSL/TLS 协议被禁用时,客户端无法通过这一过程获取服务器的公钥,而此时又没有其他途径主动获取公钥,导致了“Public Key Retrieval is not allowed”错误的出现。

            3. 解决方案

            针对“Public Key Retrieval is not allowed”错误,我们可以采取一些解决方案来解决或避免这一问题的发生:

            3.1. 在 JDBC 连接串中加入 useSSL=false 参数

            JDBC 是 Java Database Connectivity 的缩写,用于 Java 程序与数据库进行连接和操作。在 JDBC 连接数据库时,可以通过在连接串中添加参数来配置连接的属性。其中,将 useSSL 参数设置为 false 可以禁用 SSL/TLS 协议,从而避免“Public Key Retrieval is not allowed”错误的发生。

            3.2. 在 JDBC 连接串中加入 allowPublicKeyRetrieval=true 参数

            除了禁用 SSL/TLS 协议外,还可以通过在 JDBC 连接串中添加 allowPublicKeyRetrieval 参数并设置为 true 来允许公钥检索。这样一来,即使禁用了 SSL/TLS 协议,客户端仍然可以通过此参数获取服务器的公钥,从而避免“Public Key Retrieval is not allowed”错误。

            【MySQL系列】Public Key Retrieval is not allowed,image-20240324124153258,第3张

            4. 结语

            在网络通信中,安全始终是首要考虑的因素之一。禁用 SSL/TLS 协议虽然在某些场景下是必要的,但也可能带来一些安全隐患,如“Public Key Retrieval is not allowed”错误。为了解决这一问题,我们可以采取一些措施,如在 JDBC 连接串中配置参数来调整连接属性,从而确保通信的安全性和稳定性。同时,我们也应该根据具体的场景和需求,谨慎地选择是否禁用 SSL/TLS 协议,以达到最佳的安全与效率的平衡。

            通过上述措施,我们可以有效地解决“Public Key Retrieval is not allowed”错误带来的问题,保障网络通信的安全和稳定性,为应用程序的正常运行提供可靠的保障。

            觉得有用的话点个赞 👍🏻 呗。

            ❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

            💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

            🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

            【MySQL系列】Public Key Retrieval is not allowed,img,第4张