解決服務器鏈接錯誤Host ‘XXX’ is not allowed to connect to this MySQL server

解決服務器鏈接錯誤Host ‘XXX’ is not allowed to connect to this MySQL servermysql

在「配置登錄信息和數據庫(mysql)」鏈接中,出現「服務器鏈接錯誤Host 'XXX' is not allowed to connect to this MySQL server」的錯誤。sql

像這種錯誤,就是典型的遠程權限問題。數據庫

問題癥結是MySQL 沒有開放遠程登陸的權限。這時要看你的服務器到底用的那種系統,Linux或者是Windows,這個解決辦法不一樣。解決的辦法就是開啓 MySQL 的遠程登錄賬號。服務器

解決方案:ide

第一步:肯定服務器上的防火牆沒有阻止 3306 端口。this

MySQL 默認的端口是 3306 ,須要肯定防火牆沒有阻止 3306 端口,不然遠程是沒法經過 3306 端口鏈接到 MySQL 的。spa

若是您在安裝 MySQL 時指定了其餘端口,請在防火牆中開啓您指定的 MySQL 使用的端口號。code

若是不知道怎樣設置您的服務器上的防火牆,請向您的服務器管理員諮詢。server

第二步:增長容許遠程鏈接 MySQL 用戶並受權。blog

(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

 上面(2)當中的受權語句,在Mysql的圖形界面sql,能夠寫成這樣:

你想root使用123456從任何主機鏈接到mysql服務器的話,代碼以下:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

若是你想容許用戶root從ip爲192.168.1.3的主機鏈接到mysql服務器,並使用123456做爲密碼,代碼以下:

GRANT ALL PRIVILEGES ON *.* TO ‘root’@’192.168.1.3′ IDENTIFIED BY123456WITH GRANT OPTION;

 上面(2)當中的受權還能夠採用改表法:

多是你的賬號不容許從遠程登錄,只能在localhost。這個時候只要在localhost的那臺電腦,登入mysql後,更改 "mysql" 數據庫裏的 "user" 表裏的 "host" 項,從"localhost"改稱"%"

mysql -u root -pvmwaremysql>use mysql;

mysql>update user set host = '%' where user = 'root';

mysql>select host, user from user;
相關文章
相關標籤/搜索