今天在虚拟机CentOS系统中安装了mysql数据库,可是安装成功后外部却无法访问。找了好长时间才找到是由于防火墙设置造成的,现将解决过程写出来分享一下。首先,检查了mysql的权限,已经设置过了。且服务也已经启动,在localhost能够成功登陆。iptables防火墙也开启了5506端口(我安装mysql的端口喜欢采用5506,而非默认的3306)。然后,我在本地环境链接我虚拟机里面的数据库时怎么也链接不上,提示2003的错误码信息。这个是由于网络连接不上造成的。使用SQLyog采用ssh的方式能够连接上数据库,这又说明网络是通的。然后检查用户的权限已经设置过“%”的登陆权限了。最后,我到虚拟机里面查看防火墙的状态,如下:
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
6 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
8 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
11 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
12 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:5506
我就纳闷了,怎么防火墙是接受5506端口的,可就是连接不上数据库呢。。。就在这时想到了ssh是可以连接上的。所以防火墙22的端口肯定是通的。那为什么5506的端口就不行了。 突然发现了我设置的防火墙在
10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
后面,我猜想估计就是这个原因,马上把开启的端口设置放到了reject的上面,重启防火墙。搞定了!
总结:设置防火墙的时候千万要注意,不要将accept的设置放到了reject的后面,这样就可以避免防火墙设置无效的情况发生。
友情提示:不要忘记重启防火墙,呵呵!
来源:oschina
链接:https://my.oschina.net/u/254813/blog/89151