今天在虛擬機CentOS系統中安裝了mysql數據庫,但是安裝成功後外部卻沒法訪問。找了好長時間才找到是因爲防火牆設置形成的,現將解決過程寫出來分享一下。首先,檢查了mysql的權限,已經設置過了。且服務也已經啓動,在localhost可以成功登錄。iptables防火牆也開啓了5506端口(我安裝mysql的端口喜歡採用5506,而非默認的3306)。而後,我在本地環境連接我虛擬機裏面的數據庫時怎麼也連接不上,提示2003的錯誤碼信息。這個是因爲網絡鏈接不上形成的。使用SQLyog採用ssh的方式可以鏈接上數據庫,這又說明網絡是通的。而後檢查用戶的權限已經設置過「%」的登錄權限了。最後,我到虛擬機裏面查看防火牆的狀態,以下:mysql
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:5506sql
我就納悶了,怎麼防火牆是接受5506端口的,可就是鏈接不上數據庫呢。。。就在這時想到了ssh是能夠鏈接上的。因此防火牆22的端口確定是通的。那爲何5506的端口就不行了。 忽然發現了我設置的防火牆在數據庫
10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited網絡
後面,我猜測估計就是這個緣由,立刻把開啓的端口設置放到了reject的上面,重啓防火牆。搞定了!ssh
總結:設置防火牆的時候千萬要注意,不要將accept的設置放到了reject的後面,這樣就能夠避免防火牆設置無效的狀況發生。 友情提示:不要忘記重啓防火牆,呵呵!