有没有办法通过使用IPTABLES在MySQL 3306上评估连接限制? 我正在考虑允许2连接企图每隔5分钟端口3306。 谢谢
将这些限制放在MySQL本身而不是在networking层面是不是更好? 根据MySQL文档,您可以限制个人帐户的以下服务器资源:
* The number of queries that an account can issue per hour * The number of updates that an account can issue per hour * The number of times an account can connect to the server per hour * The number of simultaneous connections to the server an account can have
一个示例MySQL查询来做到这一点:
mysql> CREATE USER 'francis'@'localhost' IDENTIFIED BY 'frank'; mysql> GRANT ALL ON customer.* TO 'francis'@'localhost' -> WITH MAX_QUERIES_PER_HOUR 20 -> MAX_UPDATES_PER_HOUR 10 -> MAX_CONNECTIONS_PER_HOUR 5 -> MAX_USER_CONNECTIONS 2;
我个人更喜欢在应用程序本身中保持这种设置,而不是在没有应用程序知识的情况下操作它。 但是从我所了解的其他使用iptables的例子来看,技术上也是如此。
$IPT -A INPUT -s 0/0 -p tcp --dport 3306 --syn -m limit --limit 10/hour \ --limit-burst 10 -j ACCEPT $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A INPUT -s 0/0 -p tcp --dport 3306 -j DROP
我有兴趣做search,发现这篇文章等。 看起来你可以做到这一点。
请注意,根据应用程序的不同,限制连接数量可能实际上并不限制查询的数量。 没有什么能阻止应用程序在单个连接上进行数百个查询,甚至是最好的做法。