网站地图

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

2013年7月2日 | 分类: mysql使用 | 标签: ,

数据库和WEB服务器是分开的,数据库IP是192.168.1.3,WEB的IP是192.168.1.2。
昨天晚上数据库无故连接不上了,在web服务器上telnet 192.168.1.3 3306试了一下,报如下错误:


1
Host '192.168.1.2' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'Connection closed by foreign host.

意思是192.168.1.2这个IP被MYSQL放到黑名单里去了,WEB机器再也链接不上数据库了。
mysql有一个配置项是max_connect_errors,我们可以在启动MYSQL的时候加参数以指定这个值:


1
shell> mysqld_safe --max_connect_errors=1000000 &

这个配置也可以动态修改:


1
mysql> SET GLOBAL max_connect_errors=1000000;

修改配置文件也可以:
在my.ini中加入max_connect_errors=1000000的配置项

这个配置的作用是允许连接错误的总次数,假如你WEB服务器上有几个应用,有一个应用的数据库密码写错了,并且连接用错误的密码请求连接数据库超过max_connect_errors次,这台WEB服务器的IP就会被MYSQL放到黑名单里面去了。这里有一个需要说明的就是关于mysql错误连接计数,他的错误计数不是累积的,必须连续错误才算,比如连续错误5次时错误计数是5,但只要这个时候有一个正确的连接,错误计算就会清零,错误计数一旦超过max_connect_errors就会被放到黑名单。

要解决这个问题就是两个点:

  • 检查程序的数据库配置,尽量不要有错误的配置
  • 将max_connect_errors值设置的稍微大一点

如果已经出了这样的问题要马上解决的话就在MYSQL服务器上运行命令:


1
mysqladmin flush-hosts
目前还没有任何评论.