• 连接mysql数据库报错:host ‘xxx’ is blocked ...


    连接mysql数据库报错:host ‘xxx’ is blocked …

    使用navicat连接mysql数据库,报错。如下图:

    在这里插入图片描述

    场景描述:

    之前项目一直使用的是oracleJDK,后面就要求切换为openJDK后,再启动项目,数据库就连接不上了。报错如下图:

    可以看到报错提示为:

    ‘Host 10.192.171.128’ is blocked because of many connection error;unblock with 'mysqladmin flush-hosts'.
    

    在这里插入图片描述

    在这里插入图片描述

    解决办法:

    我也百度查询了相关资料,其中有代表性的是这一篇博客。

    https://blog.csdn.net/qq_41685731/article/details/118755483

    列出了两种解决办法。

    • 修改配置参数大小
    • flush刷新host表

    我也尝试进行了第二种解决办法,flush刷新host表。

    刚刷新完,使用navicat可以正常访问了,但尝试启动项目后,项目依然报连接不上mysql,然后再就是navicat也连接不上了,又报回之前的错了。

    问题再分析:

    我之所以项目会启动报错,是因为切换了JDK(将oracleJDK切换为了openJDK)。数据库和代码啥的都没变。

    那么,我们可以大胆猜到,问题就在JDK。

    再深入分析报错提示:

    ‘Host 10.192.171.128’ is blocked because of many connection error;unblock with 'mysqladmin flush-hosts'.
    

    可以定位为是mysql端将我ip(10.192.171.128)给锁了。就类似于一直输错密码,然后账号被锁定了一般。

    这里就是项目端连接不上mysql,但一直尝试重连,mysql把这个ip锁定了。

    百度查询,解锁的办法就是flush刷新mysql的host表。而之前刷新之后,navicat可以连,但启动项目又连接不上了。问题就出现在项目连接不上,一直重试,然后IP被mysql锁定了。

    解决办法:

    定位到问题出现在项目对mysql连接上。

    查看配置文件,发现没有useSSL安全连接参数。

    在这里插入图片描述

    添加上useSSL参数为false,问题就解决了。

    总结:

    oracleJDK切换openJDK后,mysql的连接需要添加useSSL参数,不然会无法连接mysql。

    (具体啥原因,这就涉及到两个JDK版本底层对useSSL参数的要求了,后期有空再出一篇文章,深入研究)

  • 相关阅读:
    MySQL下载与安装
    PCB设计笔记
    欧拉图相关的生成与计数问题探究
    [图论]哈尔滨工业大学(哈工大 HIT)学习笔记40-53
    一个单例模式,没必要这么卷吧
    天然气网络潮流计算模型研究(Matlab代码实现)
    数据结构初阶——树和二叉树
    CSS实现围绕按钮边框转圈的光线效果
    【js闭包】
    告别Word,用Python打造你的专业简历!
  • 原文地址:https://blog.csdn.net/qq_37924905/article/details/127106860