Host ‘host_name’ is blocked

之前服务器遇到了这个错误:

Host ‘host_name‘ is blocked because of many connection errors.
Unblock with ‘mysqladmin flush-hosts’

产生原因:

原因是因为mysql的connection errors的数量达到了配置的max_connect_errors这个变量,5.0上默认配置是10,也就是说当连续有10个connect errors的时候,mysql就认为可能有人在攻击数据库,所以直接智能的ban掉这个ip。

注意这里是连续10个,如果还没有到10个,突然有一个成功的连接,则会把connect errors数量清0,重新计算。也就是说,如果已经有了8个连接connect error了,此时第9个成功连上,则当前的connect_errors计数清零。可以通过:

mysql > show variables like ‘max_connect_errors’;

来查看当前配置的这个参数值。可以通过修改conf文件中的max_connect_errors变量来修改此参数,然后重启当前服务器。

解决方法:

在确认host name的ip是正常的ip后,并且确认没有很不稳定的网络连接原因,即,在确认这是一次正常的block之后,可以通过

mysqladmin flush-hosts

来清掉本次block,也可以登进mysql后,在命令行用mysql > flush hosts; 来清理。

参考:

  1. http://dev.mysql.com/doc/refman/5.0/en/blocked-host.html
  2. http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_connect_errors

1 comment:

  1. howard

    这个你实验过没,到底是什么原因导致的被blocked住了,我尝试了密码错误是block不住的,然后又尝试telnet,部分被blocked住了,部分没有被blocked住。

Leave a Reply

Your email address will not be published. Required fields are marked *