在MySQL安裝完成后,很多開發者會遇到這樣一個問題:
錯誤代碼 1130:host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySql server
這個錯誤通常出現在你嘗試通過遠程工具(如 Navicat、DBeaver 等)連接 MySQL 數據庫時,雖然服務器可以 ping
通、也可以 telnet
端口,但就是無法建立數據庫連接。
本文將一步步帶你排查并解決這個問題。
第一步:問題描述
如下圖所示,當你使用遠程客戶端試圖連接 MySQL 服務器時,提示如下錯誤信息:
🔥錯誤信息:
1130 - host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySql server
第二步:登錄MySQL服務器并進入命令行
首先,你需要登錄到運行MySQL服務的服務器中,使用root用戶登錄MySQL命令行:
mysql -u root -p
系統會提示你輸入密碼,輸入后即可進入MySQL操作界面。
第三步:查看所有數據庫
在MySQL命令行中執行以下命令,查看當前所有的數據庫:
SHOW DATABASES;
你會看到包括 mysql
在內的多個系統數據庫。
第四步:切換到 mysql 數據庫
我們要修改的是 mysql
數據庫中的用戶權限配置,因此需要先進入該數據庫:
USE mysql;
第五步:查看 mysql 數據庫中的表
為了確認我們是否找到了用戶權限相關的表,可以查看當前數據庫中的所有表:
SHOW TABLES;
你應該能看到一個名為 user
的表,它存儲了MySQL用戶的登錄權限信息。
第六步:查看 user 表中的 Host 和 User 字段
接下來查詢 user
表中的用戶和主機限制:
SELECT Host, User FROM user;
這說明目前只有本地可以訪問 root
用戶,遠程請求不被允許。
第七步:修改 user 表中的 Host 值
為了讓 root 用戶可以從任意主機連接,我們需要將 Host
設置為 %
:
UPDATE user SET Host = '%' WHERE User = 'root';
執行完后刷新權限,使更改立即生效:
FLUSH PRIVILEGES;
第八步:重新使用可視化工具測試連接
現在回到你的設備,打開Navicat或其他MySQL可視化客戶端工具,重新嘗試連接數據庫。
🎉 如果一切正常,你應該可以看到連接成功的提示!
小結
出現 1130-host ... is not allowed to connect to this MySql server
錯誤的主要原因是 MySQL 中的用戶權限限制,尤其是 Host
字段未設置為 %
,導致不允許遠程訪問。
擴展建議(可選)
- ? 推薦創建專門用于遠程連接的賬戶,而不是直接使用root。
- 🔐 確保關閉防火墻。
感謝閱讀!如果你覺得這篇文章對你有幫助,歡迎 點贊、收藏、轉發 支持一下,也歡迎留言交流更多關于MySQL的問題!