位置:海鸟网 > IT > linux/Unix >

linux中mysql数据库外部无法访问解决

linux中mysql数据库外部无法访问解决

在虚拟机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的后面,这样就可以避免防火墙设置无效的情况发生。

友情提示:不要忘记重启防火墙,呵呵!