我无法从远程服务器连接到mysql。 我有bind-address注释掉,但是当我在iptables中添加规则来阻止其他连接请求服务器的连接超时。
我试过这个build议 :
iptables -I INPUT 1 -p tcp -s 1.2.3.4 --dport 3306 -j ACCEPT iptables -I INPUT 1 -p tcp --dport 3306 -j DROP
但我的联系仍然超时。 input这两行的顺序并不重要。 我试图连接时回显远程服务器的IP地址,这确实是我在我的iptables中使用的IP地址。 如果没有DROP行,连接就可以正常工作,就像在我的iptables中没有任何东西一样。
echo -e "target prot opt source destination\n$(iptables -L INPUT -n | grep 3306)" :
target prot opt source destination ACCEPT tcp -- 1.2.3.4 0.0.0.0/0 tcp dpt:3306 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
(以上我用1.2.3.4replace了实际的ip)
试图从另一台服务器(VPS)连接成功。 这导致我相信有一个问题,我试图请求从共享服务器。
问题是规则顺序。
按照这个顺序input命令将会像这样结束:
问题是您在检查源IP之前删除连接。 这是因为您input的命令是前置的,不会附加规则,因此input的最后一条命令成为第一条规则。
你可以通过以下方法解决
在刷新iptables ,我使用iptraf来显示到端口3306的实时连接列表。
请求服务器是共享托pipe服务器,与请求关联的IP地址与发起请求的Web应用程序的IP地址不同。 这是不同的和改变。
唯一的解决scheme是将应用程序移动到不使用转发代理的VPS或包含数据库的服务器。
特别感谢@Jnrprimo和我一起看这个。