当我使用错误的密码连接到mysql服务器,并且测试计数结束时max_connect_errors,我发现Aborted_connects我测试的计数也出现了,但主机仍然没有被阻塞。
那么Aborted_connects超过max_connect_errorsthen host_name 是否被阻止?
此时,您可能需要运行FLUSH HOSTS并查看它是否会解除阻塞。
MySQL 文档说明了有关 FLUSH HOSTS 的内容:
- 清空主机缓存表。如果您的某些主机更改了 IP 地址,或者您收到错误消息 Host 'host_name' isblocked,您应该刷新主机表。当连接到 MySQL 服务器时,给定主机连续发生超过 max_connect_errors 个错误时,MySQL 会认为出现问题并阻止主机进一步的连接请求。刷新主机表允许来自主机的进一步连接尝试。请参见第 C.5.2.6 节“主机‘host_name’被阻止”。您可以使用 --max_connect_errors=999999999 启动 mysqld 以避免出现此错误消息。
为什么要阻止主机开始?
根据MySQL 文档:
如果出现如下错误,说明mysqld收到了很多来自主机'host_name'的中途中断的连接请求:Host'host_name'被阻塞,因为很多连接错误。使用 'mysqladmin flush-hosts' 解除阻塞 允许的中断连接请求数由 max_connect_errors 系统变量的值决定。在 max_connect_errors 请求失败后,mysqld 假设有问题(例如,有人试图闯入),并阻止主机进一步连接,直到您执行 mysqladmin flush-hosts 命令或发出 FLUSH HOSTS 语句。请参见第 5.1.3 节,“服务器系统变量”。
默认情况下,mysqld 在 10 个连接错误后阻止主机。您可以通过像这样启动服务器来调整值:
shell> mysqld_safe --max_connect_errors=10000 &
Run Code Online (Sandbox Code Playgroud)
如果您收到给定主机的此错误消息,您应该首先验证来自该主机的 TCP/IP 连接没有任何问题。如果您遇到网络问题,增加 max_connect_errors 变量的值对您没有好处。