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

MySQL 設定允許遠程連線(外網訪問)完整步驟

     編輯:MySQL 資料庫相關知識

預設 MySQL root 僅允許本地連線(localhost/127.0.0.1),若需遠程訪問,需建立遠程帳號並授權、調整防火牆/路由器端口映射。本文提供完整操作清單。

方法一:修改現有 root 帳號 host(不推薦生產環境)

mysql -u root -p
USE mysql;
UPDATE user SET host = '%' WHERE user = 'root';
FLUSH PRIVILEGES;

風險: root 擁有最高權限且開放全網 IP,極不安全。

方法二:建立專用遠程帳號(推薦)

-- 允許任意 IP 連線
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 或限制特定 IP
CREATE USER 'remote_user'@'192.168.1.100' IDENTIFIED BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'192.168.1.100' WITH GRANT OPTION;
FLUSH PRIVILEGES;

網路層面配置

  1. 公網 IP 或 DDNS:固定公網 IP 最佳;動態 IP 可用花生殼等 DDNS 服務。
  2. 開放 3306 端口:
    • 路由器:設定「虛擬伺服器/端口映射」,將外部 3306 映射至內網 MySQL 主機 3306。
    • 撥號/直連:Windows 防火牆新增「輸入規則」允許 TCP 3306;Linux iptables -A INPUT -p tcp --dport 3306 -j ACCEPT。
  3. 測試連線:
mysql -h 公網IP -u remote_user -p
# 或使用 telnet 公網IP 3306 測試端口通達性

安全加固建議

  • 僅授權必要資料庫/表權限,避免 *.*。
  • 啟用 SSL 連線:REQUIRE SSL 於 GRANT 子句中。
  • 使用 SSH 隧道或 VPN 替代直接暴露 3306。
  • 配置 bind-address = 0.0.0.0 於 my.cnf 監聽所有介面(預設 127.0.0.1)。
  • 定期審核 mysql.user 表,移除無用帳號。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved