2013-09-30 66 views
88

爲什麼哦爲什麼我不能連接到mysql?錯誤1130(HY000):主機''不允許連接到這個MySQL服務器

mysql -u root -ptest101 -h xxx.xxx.xxx.xxx 
ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server 

在my.cnf我有以下

# Instead of skip-networking the default is now to listen only on 
# localhost which is more compatible and is not less secure. 
bind-address  = 0.0.0.0 

我也跑了下面......

'UPDATE mysql.user SET Password = PASSWORD('test101') WHERE User = 'root'; 
FLUSH PRIVILEGES; 

我可以在主機上用mysql -u root訪問權限 - ptest101但不使用mysql -u root -ptest101 -h xxx.xxx.xxx.xxx

哇......爲什麼會發生這種情況?我ñubuntj 12.04

mysql> SELECT host FROM mysql.user WHERE User = 'root'; 
+---------------------------------------------+ 
| host          | 
+---------------------------------------------+ 
| %           | 
| 127.0.0.1         | 
| ::1           | | 
| localhost         | 
+---------------------------------------------+ 
5 rows in set (0.00 sec) 
+0

請記住,mysql帳戶不只是用戶名。它們是'user @ host'對,其中任一對都可以是通配符。您可能正在使用正確的用戶名,但是您是否授予了正確的主機權限? –

回答

193

root帳戶,及本聲明適用於任何帳戶,只可能被加入的本地主機訪問(推薦)。

你可以檢查此:

SELECT host FROM mysql.user WHERE User = 'root'; 

如果你只看到localhost127.0.0.1結果,你不能從外部源連接。如果您看到其他IP地址,但不是您連接的那個IP地址 - 這也是一個指示。

您將需要添加要授予訪問每個系統的IP地址,然後再授予特權:

CREATE USER 'root'@'ip_address' IDENTIFIED BY 'some_pass'; 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'ip_address'; 

如果你看到%,那麼,有完全因爲這是一個問題「任何遠程來源」。然而,如果你想要的任何/所有系統通過根連接,使用%通配符授予訪問權限:

CREATE USER 'root'@'%' IDENTIFIED BY 'some_pass'; 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; 

最後,重載的權限,你應該能夠有遠程訪問:

FLUSH PRIVILEGES; 
+0

我做了什麼建議。看到上面的那個。我仍然有同樣的錯誤。我無法連接。 – Tampa

+5

這篇文章的工作http://bucktownbell.com/?p=653 – Tampa

+2

該sql語句「授予所有特權*。*到'根'@'%'」需要一個「;」之後它...... –

-4

轉到PhpMyAdmin,點擊所需的數據庫, 轉到Privilages選項卡,並創建新用戶「遠程」,並給予他所有privilages 和主機字段集「任何主機」選項(%)。

12

以下兩個步驟的工作完美的罰款對我來說:

  1. 註釋掉綁定地址從文件/etc/mysql/my.cnf

    #bind-address = 127.0.0.1

  2. 運行下面的查詢在phpMyAdmin:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;

+6

+'sudo服務mysql重新啓動' – sromku

1

mysql> CREATE USER'name'@'%'IDENTIFIED BY'passWord'; Query OK,0 rows affected(0。00秒)

mysql>授予所有特權 TO'name'@'%';查詢OK,0行 受影響(0.00秒)

mysql> FLUSH PRIVILEGES;查詢OK,0行受到影響(0.00秒)

的mysql>

  1. 請確保您有您的名字和%正確的方式輪
  2. 確保您已將3306端口的任何防火牆您可能正在運行(雖然這會給出不同的錯誤消息)

希望這可以幫助別人......

-8

有一個簡單的方法來解決這個錯誤

只需更換該文件夾中的文件:C:\xampp\mysql\data\mysql

與文件上:C:\xampp\mysql\backup\mysql

7
$mysql -u root --host=127.0.0.1 -p 

mysql>use mysql 

mysql>GRANT ALL ON *.* to [email protected]'%' IDENTIFIED BY '[email protected]'; 

mysql>FLUSH PRIVILEGES; 

mysql> SELECT host FROM mysql.user WHERE User = 'root'; 
-1

對於那些誰能夠訪問的cPanel,有更簡單的方法來解決它。

  1. 日誌中在Databases節的cPanel => 「遠程MySQL」:

  2. 添加的IP地址/主機名,你是從

  3. 做訪問!

相關問題