MySQL 預設只允許本地連線,若需從其他主機存取資料庫,必須調整權限設定。本文整理三種常見且有效的遠程連線授權方式,並說明關鍵的生效步驟與防火牆檢查,幫助您快速完成部署。
此法直接在 mysql 系統資料庫的 user 表中,將特定帳號的 host 值從 localhost 改為 %(代表允許所有主機)。
mysql -u root -pUSE mysql;UPDATE user SET host = '%' WHERE user = 'root';SELECT host, user FROM user;注意:修改後務必執行 FLUSH PRIVILEGES; 重新載入權限表,否則變更不會立即生效。
透過 SQL 指令彈性授予特定帳號、主機的完整權限,適用於建立專用遠程連線帳號。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.6' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
同樣需執行 FLUSH PRIVILEGES; 使設定生效。
在安裝 MySQL 的伺服器上依序執行:
mysql -h localhost -u rootGRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;FLUSH PRIVILEGES;EXIT;完成後即可從任意主機以 root 身分登入。
my.cnf 或 my.ini 中 [mysqld] 區段的 bind-address 是否設為 0.0.0.0 或具體 IP,而非 127.0.0.1。systemctl restart mysqld(Linux)或透過服務管理工具重啟(Windows)。生產環境建議:
mysql.user 表,移除不必要的遠程帳號。