今天我在使用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
添加黑體字內容以打開3306端口,重啟iptables:
#service iptables restrat
4、還有一種方法說要修改mysql的配置文件my.cnf中的bind-address選項,我的配置文件中沒有這一選項,加上之後,沒有效果,不知道什麼原因。
以上四個地方,經反復試驗後,其中授權root和開放3306端口是必須的,缺一不可。