相信使用数据库的同学都会经常遇到1129错误:Host is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’;网上也有不少教程提供解决方案,如果你是MYSQL数据库的管理员,拥有数据库操作权限,那可可以参考如下文章:
Mysql使用定时器自动执行FLUSH HOSTS处理
如果你不是数据库管理员,无法修改系统配置文件,那么则可以选择本文较为优雅的方式进行解决。
1.前期准备
需要本机上安装mysql命令;
2.脚本编制
flush_hosts_mysql.sh脚本编制如下:
#!/bin/bash
echo "Connect mysql..."
mysql -h 117.0.0.1 -P 3306 -u root -pYourPasswd <<EOF
use mysql;
flush hosts;
# set MYSQL args
show global variables like '%max_connect_errors%';
set global wait_timeout=100;
set global interactive_timeout=300;
exit
EOF
echo "Connect succes!"
3.配置定时运行
crontab -e命令编辑定时任务:
#每三个小时运行一次刷新数据库脚本
1 */3 * * * sh /home/flush_hosts_mysql.sh
4.脚本错误的问题
有人可能会遇到下面的问题
-bash: ./myss.sh: /bin/bash^M: bad interpreter: Text file busy
这是因为脚本的编辑格式多半是windows下编辑的,需要执行dos2unix命令 ( Centos下安装方式:yum install dos2unix) 将脚本转换为Unix格式:
dos2unix /home/flush_hosts_mysql.sh
这样即可实现通过脚本登录数据库,然后对数据库进行定时刷新操作。