来自外部主机的mysql上的TIME_WAIT连接太多

我的netstat显示超过2000个连接的状态TIME_WAIT,似乎卡住,不会消失。 就是这样几个小时,许多连接来自一个IP地址,没有我的数据库服务器的特权。 这似乎是悬挂,我怎么清除这个? 这是蛮力攻击吗? 我所有的用户权限都有特定的主机,我不使用任何通配符。

这是一个netstat的片段:

tcp 0 0 server:mysql static.98.17.76.1:45222 TIME_WAIT tcp 0 0 server:mysql static.98.17.76.1:34341 TIME_WAIT tcp 0 0 server:mysql static.98.17.76.1:51888 TIME_WAIT tcp 0 0 server:mysql static.98.17.76.1:54459 TIME_WAIT tcp 0 0 server:mysql static.98.17.76.1:49599 TIME_WAIT tcp 0 0 server:mysql static.98.17.76.1:50751 TIME_WAIT tcp 0 0 server:mysql static.98.17.76.1:50731 TIME_WAIT tcp 0 0 server:mysql static.98.17.76.1:54658 TIME_WAIT tcp 0 0 server:mysql static.98.17.76.1:58974 TIME_WAIT tcp 0 0 server:mysql static.98.17.76.1:33800 TIME_WAIT tcp 0 0 server:mysql static.98.17.76.1:59840 TIME_WAIT tcp 0 0 server:mysql static.98.17.76.1:53495 TIME_WAIT tcp 0 0 server:mysql static.98.17.76.1:51561 TIME_WAIT 

另外,我的PROCESSLIST在mysql中并没有显示这些连接,所以我假定它们立即丢弃,但不知道为什么它们不会消失。 这会导致任何与MySQL的最大连接的问题?

如果您在TIME_WAIT状态下在netstat输出中发现某些连接,则这可能是正常的。 当你有很多短暂的连接时,你可能会得到太多。

我有一些甚至不需要提供任何用户名,密码或数据库名称。 只需input:

 mysql -h your_server_ip ERROR 1045 (28000): Access denied for user 'khaled'@'your_pc_ip' (using password: NO) 

并且您将在TIME_WAIT状态中获得一个左侧连接:

 sudo netstat -anp | grep 3306 tcp 0 0 server_ip:3306 your_pc_ip:50464 TIME_WAIT - 

但是,build议拒绝来自此IP的访问,特别是如果您不将此IP识别为合法的客户端。 这样一个简单的iptables规则可以拒绝来自这个IP的进一步请求:

 sudo iptables -A INPUT -s bad_ip -p tcp --dport 3306 -j DROP 

您可能需要更改-A-I具体取决于您是否有其他规则。