主机IP被阻止,因为MySQL/MariaDB上存在许多连接错误
登录到mysql/mysqld服务器,报错:
ERROR 1129 (HY000): Host ‘172.16.5.100’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts
如何在Linux或Unix-like系统上解决此问题?
允许的连接数由MySQL/MariaDB max_connections系统变量控制。
当MySQL与Web服务器一起使用时,默认值是151,以提高性能。
如果您以群集模式运行流量较高的网站或MariaDB服务器,或使用Galera主服务器来控制数据库群集,则可能会遇到问题。
如果需要支持更多连接,则应为此变量设置更大的值。
如何找出max_connections的当前值
执行以下mysql命令:
$ mysql -u root -p
现在发出以下sql命令:
mysql> show variables like "max_connections";
输出示例:
+-----------------+--------+ | Variable_name | Value | +-----------------+--------+ | max_connections | 151 | +-----------------+--------+ 1 row in set (0.00 sec)
如何增加max_connections值?
使用文本编辑器(例如vi命令或nano命令)在/etc /目录中编辑my.cnf或mariadb.conf.d/50-server.cnf:
$ sudo vim /etc/mariadb.conf.d/50-server.cnf
在[mysqld]部分下添加/添加/编辑以下行(例如,将值设置为1000。
最大限制为" 100000"):
max_connections = 1000
保存并关闭文件。
接下来,重启mysqld服务,运行:
$ sudo systemctl restart mysql
如果您使用的是CentOS/RHEL/Fedora/Oracle/Scientific Linux,请运行:
$ sudo systemctl restart mysqld
如果您使用的是FreeBSD Unix,请运行以下命令重新启动系统:
$ sudo /usr/local/etc/rc.d/mysql-server restart
使用以下命令验证新限制:
$ mysql -u root -p -e 'show variables like "max_connections";'
使用MySQL/MariaDB时如何查看mac_connection限制
关于mysqladmin命令的注意事项
要刷新所有缓存的主机并消除此限制,请运行以下bash命令
$ mysqladmin flush-hosts
或传递用户名并提示输入密码:
$ mysqladmin -u root -p flush-hosts
关于太多打开文件错误的说明
如果收到错误,则需要更改mysqld可用的文件描述符的数量。
要查看当前的FD限制,请运行:
$ mysql -u root -p -e 'show variables like "open_files_limit";'
输出示例:
Enter password: +------------------+--------+ | Variable_name | Value | +------------------+--------+ | open_files_limit | 500005 | +------------------+--------+
如果限制太小,再次编辑my.cnf并在日志文件中出现错误:
$ sudo vi my.cnf
或者
$ sudo vim /etc/mariadb.conf.d/50-server.cnf
根据[mysqld]部分中的要求设置值
open_files_limit = 1024000
保存并关闭文件。
确保如上所述重新启动mysqld。
如果您使用的是基于GNU/Linux systemd的发行版(例如RHEL/CentOS 7),请创建一个名为:
$ sudo vi /etc/systemd/system/mysqld.service
追加以下内容:
[Service] User=mysql Group=mysql LimitNOFILE=1024000
重新启动所需的服务:
$ sudo systemctl daemon-reload $ sudo systemctl restart mysqld
旧版Linux发行版必须编辑/etc/security/limits.conf文件。