项目停止后,重启,突然报错,折腾了一番后解决了
错误1:Host is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’
原因:
同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞;
解决方法:
1、提高允许的max_connection_errors数量(治标不治本):
① 进入Mysql数据库查看max_connection_errors: show variables like ‘%max_connection_errors%’;
② 修改max_connection_errors的数量为1000: set global max_connect_errors = 1000;
③ 查看是否修改成功:show variables like ‘%max_connection_errors%’;
2、使用mysqladmin flush-hosts 命令清理一下hosts文件(不知道mysqladmin在哪个目录下可以使用命令查找:whereis mysqladmin);
① 在查找到的目录下使用命令修改:/usr/bin/mysqladmin flush-hosts -h192.168.1.1 -P3308 -uroot -prootpwd;
备注:
其中端口号,用户名,密码都可以根据需要来添加和修改;
配置有master/slave主从数据库的要把主库和从库都修改一遍的(我就吃了这个亏明明很容易的几条命令结果折腾了大半天);
第二步也可以在数据库中进行,命令如下:flush hosts;
我的操作:(在数据库执行了最大连接数量set global max_connect_errors = 1000;,不能解决,然后到服务器登录mysql,执行了flush hosts,这个问题就解决了,然后冒出第二个问题javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suit)
错误2:javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suit
解决尝试1:找到jdk/jre/lib/security/java.security文件进行修改(直接删除掉SSLv3这个参数),然后重启项目,发现问题还是没有解决
解决尝试2:在数据库配置文件 jdbc-url 中加了 &useSSL=false
别的文章里找到这个解决,就是JDK的指定使用SSL连接数据库问题
但是为什么从前的也是同样的配置并没有报错呢,我想到了jdk版本,于是我我换了jdk试,果然的不出我所料,换了jdk版本就不需要加 &useSSL=false
最后得出结论,之前的jdk版本默认不使用SSL连接mysql,而我现在电脑上的版本默认使用SSL链接mysql,所以需要指定不使用SSL
当前版本是1.8.0_291,之前的版本是1.8.0_161