1. 程式人生 > >解決伺服器連線錯誤Host ‘XXX’ is not allowed to connect to this MySQL server

解決伺服器連線錯誤Host ‘XXX’ is not allowed to connect to this MySQL server

本文轉載於http://www.cnblogs.com/jesu/p/5650699.html,向原作者表示感謝,如有侵權,請聯絡我。

這段時間在研究火車頭的入庫教程,在“配置登陸資訊和資料庫(mysql)”連線中,出現“伺服器連線錯誤Host 'XXX' is not allowed to connect to this MySQL server”的錯誤。像這種錯誤,就是典型的遠端許可權問題。

問題癥結是MySQL 沒有開放遠端登入的許可權。這時要看你的伺服器到底用的那種系統,linux或者是Windows,這個解決辦法不同。解決的辦法就是開啟 MySQL 的遠端登陸帳號。

有兩大步:

1、確定伺服器上的防火牆沒有阻止 3306 埠。

MySQL 預設的埠是 3306 ,需要確定防火牆沒有阻止 3306 埠,否則遠端是無法通過 3306 埠連線到 MySQL 的。

如果您在安裝 MySQL 時指定了其他埠,請在防火牆中開啟您指定的 MySQL 使用的埠號。

如果不知道怎樣設定您的伺服器上的防火牆,請向您的伺服器管理員諮詢。

2、增加允許遠端連線 MySQL 使用者並授權。

1)登陸mysql

2)建立遠端登陸使用者並授權,在要連結的伺服器上操作

mysql> grant all PRIVILEGES on db_name.* to 'username'@'xxx.xxx.xx.x' identified by 'password' WITH GRANT OPTION;

上面的語句表示將資料庫 db_name 的所有許可權授權給 username 這個使用者,允許 username 使用者在 xxx.xxx.xx.x 這個 IP 進行遠端登陸,並設定 username 使用者的密碼為 password。

分析引數:

all PRIVILEGES 表示賦予所有的許可權給指定使用者,這裡也可以替換為賦予某一具體的許可權,例如:select,insert,update,delete,create,drop 等,具體許可權間用“,”半形逗號分隔。

db_name.* 表示上面的許可權是針對於哪個表的,db_name指的是資料庫名稱,後面的 * 表示對於所有的表,由此可以推理出:對於全部資料庫的全部表授權為“*.*”,對於某一資料庫的全部表授權為“資料庫名.*”,對於某一資料庫的某一表授權為“資料庫名.表名”。

username表示你要給哪個使用者授權,這個使用者可以是存在的使用者,也可以是不存在的使用者。

xxx.xxx.xx.x 表示允許遠端連線的 IP 地址,你的IP,如果想不限制連結的 IP 則設定為“%”即可。

password 為使用者username的密碼。

最後執行了上面的語句後,一般都會立即生效,返回值如下:

Query OK, 0 rows affected (0.01 sec)


如果沒有上面的語句那麼請執行下面的命令,即可立即生效。

Mysql> flush privileges