主机IP被阻止,因为MySQL/MariaDB上存在许多连接错误

时间:2020-01-09 10:38:16  来源:igfitidea点击:

登录到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文件。