萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 遠程連線 "Host is not allowed" 解決:更新 user 表 Host 欄位與 phpMyAdmin 圖形化操作

ERROR 1130: Host 'x.x.x.x' is not allowed to connect to this MySQL server

MySQL 權限系統以 User + Host 雙主鍵識別帳號。預設 root@localhost 僅允許本機連線,遠程需額外授權。

方法一:SQL 更新 user 表 (命令列)

mysql -u root -p
USE mysql;
-- 查看現狀
SELECT User, Host FROM user WHERE User='root';

-- 修改為允許所有 IP (通配符 %)
UPDATE user SET Host='%' WHERE User='root' AND Host='localhost';

-- 或新增一條遠程記錄 (保留 localhost)
INSERT INTO user (Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject)
VALUES ('%', 'root', '', '', '', '')
ON DUPLICATE KEY UPDATE Host='%';

FLUSH PRIVILEGES;

方法二:GRANT 授權建立遠程帳號 (推薦,不動 root)

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

方法三:phpMyAdmin 圖形化操作

  1. 以 root 登入 phpMyAdmin
  2. 點擊頂部「用戶帳號」/「權限」
  3. 找到 root - localhost → 點擊「編輯權限」
  4. 「登入資訊」區 → 「主機名」改為 % (或新增一行 root / %)
  5. 執行 → 自動執行 FLUSH PRIVILEGES

常見報錯處理

ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
-- 原因:已存在 root@% 記錄
-- 解決:直接 FLUSH PRIVILEGES 或刪除舊記錄後重建

安全加固建議

  • **生產環境禁用 root@%**:建立專用應用帳號 app_user@'10.0.0.%'
  • 限制來源 IP:GRANT ... TO 'user'@'192.168.1.0/255.255.255.0' (支援 CIDR,MySQL 8.0+)
  • 啟用 SSL:REQUIRE SSL 強制加密傳輸
  • 定期審計:SELECT User, Host FROM mysql.user WHERE Host='%';

核心概念: MySQL 權限 = User + Host 組合。localhost ≠ 127.0.0.1 ≠ %。修改 Host 欄位即改變「從哪裡可以連線」,**不影響密碼**。

copyright © 萬盛學電腦網 all rights reserved