Linux下mysql端口不能远程访问的问题 防火墙设置
以下内容只解决iptables开放端口问题,不解决mysql数据库本身账号远程访问权限问题.
Linux iptables 开放Mysql端口允许远程访问
修改防火墙配置文件:
vi /etc/sysconfig/iptables
增加下面一行:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
或者使用命令
iptables -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
保存配置,否则重启不生效
service iptables save
重新启动iptable
service iptables restart
这时就可以从其他机器访问Mysql了。
开通3306 端口的行必须在icmp-host-prohibited前
之前一直都找不到问题,配置了3306端口始终不能外部访问mysql,关闭iptables就可以.终于找到问题..
iptables -L -n --line-number 在RH-Firewall-1-INPUT里有一个REJECT 是指向icmp的..
要开放的端口必须要在这条规则之前..如果使用INPUT加载RH-Firewall-1-INPUT,可以把REJECT放到RH-Firewall-1-INPUT下,让INPUT首先加载RH-Firewal-1-INPUT里的规则,然后再加载REJECT..
或者把3306端口的开放规则写在INPUT里的RH-Firewall-1-INPUT之前..
(个人觉得第一种比较方便,,以后有规则可以直接加在RH里,不用再管顺序问题..)
添加REJECT的命令为:
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
附本人配置..
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-OUTPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:21
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306