今天我在使用php遠程登錄我的mysql數據庫時登錄不上去,并且我用的是root用戶啊,下面我查了網上一些資料終于搞定了,下面來看看過程吧,希望對大家點幫助.
今天使用mysql workbench 連接vmware上的mysql時,一直無法連接,查閱了網上的相關資料之后,收集了一些解決方法.
1、授權法:mysql的root用戶默認情況下只能在本地登陸,不能遠程,若遠程連接,需要授權,代碼如下:
- mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
- mysql>FLUSH PRIVILEGES;
'root'@'%',指定root用戶可以在任意一臺計算機上連接數據庫服務器,若要指定特定的計算機,可將%替換為特定的IP.
2、改表法:和授權法類似,授權法的結果是在數據庫mysql的user表中添加一條記錄,host列值為‘%’,user列值為‘root’,如下表:
- +-----------------------+------+
- | host | user |
- +-----------------------+------+
- | % | root |
- | 127.0.0.1 | root |
- | localhost | |
- | localhost | root |
- | localhost.localdomain | |
- | localhost.localdomain | root |
- +-----------------------+------+
3、開放3306端口:網上更多的是強調root用戶的授權方法,但是如果只是給root授權而沒有開放3306端口,仍舊是無法連接.
開放端口的方法如下,打開文件 /etc/sysconfig/iptables,該文件路徑因操作系統而異,文件內容如下:
- # Firewall configuration written by system-config-firewall
- # Manual customization of this file is not recommended.
- *filter
- :INPUT ACCEPT [0:0]
- :FORWARD ACCEPT [0:0]
- :OUTPUT ACCEPT [0:0]
- -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- -A INPUT -p icmp -j ACCEPT
- -A INPUT -i lo -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
- -A INPUT -j REJECT --reject-with icmp-host-prohibited
- -A FORWARD -j REJECT --reject-with icmp-host-prohibited
- COMMIT --Vevb.com
添加黑體字內容以打開3306端口,重啟iptables:#service iptables restrat
4、還有一種方法說要修改mysql的配置文件my.cnf中的bind-address選項,我的配置文件中沒有這一選項,加上之后,沒有效果,不知道什么原因.
以上四個地方,經反復試驗后,其中授權root和開放3306端口是必須的,缺一不可.
新聞熱點
疑難解答