MySQL 连接出错 ‘mysqladmin flush-hosts’ 解决方案
错误:Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
原因:
同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞;
分析原因:
经排查,是由于MYSQL数据库的参数:max_connect_errors(系统默认10)
mysqld已经得到了大量(max_connect_errors)的主机’hostname’的在中途被中断了的连接请求累计超过10次,就再也无法连接上mysqld服务,直到 FLUSH HOSTS 或者 重启MySQL服务。
解决方法:
1、提高允许的max_connection_errors数量(治标不治本):
① 进入Mysql数据库查看max_connection_errors:
> show variables like '%max_connect_errors%';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| max_connect_errors | 1000 |
+--------------------+-------+
② 修改max_connection_errors的数量为1000:
set global max_connect_errors = 1000;
或
vim /etc/my.cnf.d/server.cnf
[mysqld]
port = 3306
max_allowed_packet=12800M
max_connections=2048
max_connect_errors=1000
③ 查看是否修改成功:
show variables like '%max_connect_errors%';
2、使用mysqladmin flush-hosts 命令清理一下hosts文件
# whereis mysqladmin
mysqladmin: /usr/bin/mysqladmin /usr/share/man/man1/mysqladmin.1.gz
① 在查找到的目录下使用命令修改:
/usr/bin/mysqladmin flush-hosts -h192.168.1.1 -P3306 -uroot -p123456;
备注:
其中端口号,用户名,密码都可以根据需要来添加和修改;
配置有master/slave主从数据库的要把主库和从库都修改一遍的(我就吃了这个亏明明很容易的几条命令结果折腾了大半天);
第二步也可以在数据库中进行,命令如下:
> flush hosts;
Query OK, 0 rows affected (0.00 sec)
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2016-08-26 21:42:06
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!