萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql root 用戶無法遠程登陸問題

mysql root 用戶無法遠程登陸問題

今天我在使用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端口是必須的,缺一不可。

copyright © 萬盛學電腦網 all rights reserved