mysql”Host ‘host_name’ is blocked because of many connection errors. Unblock with ‘mysqladmin flush-hosts’”错误
数据库和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
发表评论
| Trackback