預設 MySQL 僅允許 localhost 連線。遠程訪問被拒時,可透過「修改 user 表 Host 欄位」或「GRANT 授權」兩種方式開放,並務必執行 FLUSH PRIVILEGES 使變更生效。
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 ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.6' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.6' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
FLUSH PRIVILEGES:修改授權表或 GRANT 後必須執行,否則不生效。bind-address 設定錯誤:my.cnf 中 bind-address = 0.0.0.0 或註解掉,才會監聽所有介面。caching_sha2_password,舊版客戶端需改用 mysql_native_password 或升級驅動。# 遠程主機測試
mysql -h -u myuser -p
# 登入後
SHOW GRANTS;
SELECT CURRENT_USER();
掌握雙軌方案,按「最小權限」原則精準開放遠程存取,兼顧運維便利與安全合規。