使用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表。
刚刷新完,使用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参数的要求了,后期有空再出一篇文章,深入研究)