我一直在使用“Linux防火墙”iptables在专用的Linux服务器上打开一个简单的端口。
我已经使用Webmin和terminal在表中添加端口(3306),但它仍然不会让我远程连接。
我重新启动了多次iptables,它仍然无法正常工作。
这是iptables -L的输出
http://pastie.org/private/cqnsjusfgtehafg7g42vq
请帮忙。
我敢打赌,你的MySQL实例不是在公共IP上侦听,只能在本地主机或Unix套接字上侦听。 检查netstat -ltn的输出, netstat -ltn以:3306结尾的本地地址; 如果没有,则在socket上监听,从my.cnf删除skip-networking并重新启动; 如果它说127.0.0.1:3306那么它正在本地主机上侦听,从my.cnf删除bind-address = 127.0.0.1并重新启动。
为了安全起见,最好通过SSH隧道来访问MySQL,因为MySQL不encryption任何东西,并且将MySQL实例打开到世界是一个可怕的想法。 这篇来自我的工作的知识库文章描述了这个过程: http : //www.anchor.com.au/hosting/support/MySQL/Connecting_to_mysql_remotely
(呵呵,另外,防火墙不会阻塞任何东西,因为所有的策略都设置为ACCEPT,这是一个没有目的的防火墙)。
Mysql连接问题?
我知道这听起来很奇怪,但我不得不问,是MySQL运行?
在你的my.cnf中,你可能会有线路跳过networking,阻止远程连接。
还要检查在rc.mysqld启动你的mysql的守护进程(位置可能不同,可能是/ etc / sysconfig / mysqld)没有–skip-networking
在你的mysql你可以检查一个:
mysql> SHOW VARIABLES LIKE'skip_networking';
对于iptables,我使用:
iptables -A INPUT -p tcp -s 0/0 – 端口1024:65535 -d [服务器IP] – 端口3306 -m状态 – 状态新build,build立-j接受
iptables -A OUTPUT -P tcp -s [Server_IP] –sport 3306 -d 0/0 –dport 1024:65535 -m state –state ESTABLISHED -j ACCEPT
你有selinux运行在强制模式? 尝试cat /selinux/enforce找出 – 我认为默认强制模式将阻止传入的连接。