Mysql数据库:Host 'xxx.xxx.xxx.xxx' is blocked because of many connection errors问题处理
一、问题如下
Host 'xxx.xxx.xxx.xxx' is blocked because of many connection errors
这个错误是因为在短时间内频繁地对数据库进行错误连接,触发了数据库的保护机制,锁住了该ip对数据库的访问权限。(错误连接可能是由错误的用户名、密码、配置的链接后缀或者白名单等引起,这个需要自己检查确认)
二、问题处理
1、首要的肯定是要检查并矫正数据库的信息配置是否正确了,如果不正确的话即便不报这个错也访问失败,应该确认无误后再进行解锁流程。
2、因为之前使用错误的信息进行了频繁的错误连接,可能会被当成恶意攻击处理了,拉进了黑名单。
所以在配置调整正确之后,依旧无法访问,此时就需要给ip进行解锁。
数据库查询中执行以下语句:
flush hosts;
清理禁用ip的缓存,这样就放开该ip的访问权限了。
不过这也是治标不治本的方法,因为根源在错误的数据库链接上,如果没有矫正的话,在一段时间后错误连接数超过了设定的阈值,还是会出现这样的问题。
如果只是短时间调试使用的话,这种方法用来处理还是可行的。
下面是另一个配置,调整错误链接数的最大阈值,这样可以拉大报错的时间间隔。
在数据库查询中执行如下语句:
show variables like 'max_connect_errors';
得到的结果如下:
这个是调整之后的值,一般没有调整过的可能比较小,调整该数值使用以下命令:
set global max_connect_errors = 10000;
这里是一次性的配置,不是永久的,因为这种处理方法一般都是短时适用,没必要调整配置文件去修改永久的数据。
使调整的配置生效:
flush privileges