解決虛擬機linux端mysql數據庫無法遠程訪問 前天無聊在虛擬機中的CentOS上裝了一個mysql玩玩,突然想用jdbc連接用java操作下數據庫,可是怎麼都連接不上,具體情況為: 1.ping 192.168.16.128 成功 2.telnet 192.168.16.128 3306 拒絕訪問 在3306端口,可見CentOS防火牆屏蔽了3306端口 修改方式為: 切換到root用戶 打開iptables的配置文件:vi /etc/sysconfig/iptables 修改CentOS防火牆時注意:一定要給自己留好後路,留VNC一個管理端口和SSh的管理端口 內容如下: # Firewall configuration written by system-config-securitylevel # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp –icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited COMMIT 可見我的防火牆只開了22端口,因此我們添加3306端口 修改CentOS防火牆需要注意的是,你必須根據自己服務器的情況來修改這個文件。 舉例來說,如果你不希望開放80端口提供web服務,那麼應該相應的刪除這一行: -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT 我們添加 -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT 全部修改完之後重啟iptables:service iptables restart 你可以驗證一下是否規則都已經生效:iptables -L 這樣,我們就完成了CentOS防火牆的設置修改。 這時我們通過telnet 192.168.16.128 3306 成功 但此時我們仍不能訪問,因為mysql沒有授權遠程用戶 如,你想root2使用root2從任何主機連接到mysql服務器的話。 切換到mysql中 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root2'@'%'IDENTIFIED BY 'root2' WITH GRANT OPTION; 或者如果你想允許用戶myuser從ip為192.168.1.6的主機連接到mysql服務器,並使用mypassword作為密碼 mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 然後執行: mysql>FLUSH RIVILEGES; mysql>exit; 使修改生效. 這時我們在遠程:mysql -h 192.168.16.128 -u root2 -p 輸入密碼 root2 成功~ 用jdbc連接~成功~撒花~~~