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

MySQL 遠程連線設定完整指南:三種實用方法詳解

     編輯:MySQL 資料庫相關知識

前言

MySQL 預設只允許本地連線,若需從其他主機存取資料庫,必須調整權限設定。本文整理三種常見且有效的遠程連線授權方式,並說明關鍵的生效步驟與防火牆檢查,幫助您快速完成部署。

方法一:修改 user 表的 Host 欄位(改表法)

此法直接在 mysql 系統資料庫的 user 表中,將特定帳號的 host 值從 localhost 改為 %(代表允許所有主機)。

  1. 以 root 身分登入本機 MySQL:
    mysql -u root -p
  2. 切換到 mysql 資料庫:
    USE mysql;
  3. 更新 host 欄位:
    UPDATE user SET host = '%' WHERE user = 'root';
  4. 驗證變更:
    SELECT host, user FROM user;

注意:修改後務必執行 FLUSH PRIVILEGES; 重新載入權限表,否則變更不會立即生效。

方法二:使用 GRANT 授權指令(授權法)

透過 SQL 指令彈性授予特定帳號、主機的完整權限,適用於建立專用遠程連線帳號。

允許任意主機連線

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

限定特定 IP 連線(例:192.168.1.6)

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

同樣需執行 FLUSH PRIVILEGES; 使設定生效。

方法三:針對 root 帳號的快速授權流程

在安裝 MySQL 的伺服器上依序執行:

  1. 進入 MySQL:
    mysql -h localhost -u root
  2. 授予 root 遠程存取權:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
  3. 重新載入權限:
    FLUSH PRIVILEGES;
  4. 離開:
    EXIT;

完成後即可從任意主機以 root 身分登入。

常見問題排查

  • 防火牆/安全群組:確認伺服器已開放 TCP 3306 埠(或自訂埠)的入站規則。
  • bind-address 設定:檢查 my.cnf 或 my.ini 中 [mysqld] 區段的 bind-address 是否設為 0.0.0.0 或具體 IP,而非 127.0.0.1。
  • 權限快取:若仍無法連線,嘗試重啟 MySQL 服務:
    systemctl restart mysqld(Linux)或透過服務管理工具重啟(Windows)。

安全性建議

生產環境建議:

  • 避免直接開放 root 遠程登入,改建立專用帳號並限制來源 IP。
  • 啟用 SSL 連線加密傳輸。
  • 定期審核 mysql.user 表,移除不必要的遠程帳號。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved