首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

解決 MySQL 禁止遠程訪問:改表法與 GRANT 授權法雙軌詳解

     編輯:MySQL 資料庫相關知識

預設 MySQL 僅允許 localhost 連線。遠程訪問被拒時,可透過「修改 user 表 Host 欄位」或「GRANT 授權」兩種方式開放,並務必執行 FLUSH PRIVILEGES 使變更生效。

方法一:改表法(直接修改 user 表)

mysql -u root -p
USE mysql;
UPDATE user SET Host='%' WHERE User='root';
FLUSH PRIVILEGES;
SELECT Host, User FROM user;  -- 驗證

注意: 若同時存在 root@localhost 與 root@%,MySQL 排序規則會優先匹配 localhost,遠程連線仍走 % 記錄,無衝突。

方法二:GRANT 授權法(推薦,更靈活)

1. 開放所有主機、所有庫、所有權限

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

2. 限制特定 IP

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.6' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;

3. 限制特定資料庫

GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.6' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;

常見坑點

  • 忘記 FLUSH PRIVILEGES:修改授權表或 GRANT 後必須執行,否則不生效。
  • 防火牆/安全組未放行 3306:雲主機需在安全組入站規則開放 TCP 3306。
  • bind-address 設定錯誤:my.cnf 中 bind-address = 0.0.0.0 或註解掉,才會監聽所有介面。
  • 密碼驗證插件不匹配:MySQL 8.0+ 預設 caching_sha2_password,舊版客戶端需改用 mysql_native_password 或升級驅動。

驗證腳本

# 遠程主機測試
mysql -h  -u myuser -p
# 登入後
SHOW GRANTS;
SELECT CURRENT_USER();

掌握雙軌方案,按「最小權限」原則精準開放遠程存取,兼顧運維便利與安全合規。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved