首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux 下開啟 MySQL 遠程訪問權限與防火牆開放 3306 埠完整指南

     編輯:MySQL 綜合教學

Linux 下開啟 MySQL 遠程訪問權限與防火牆開放 3306 埠完整指南

預設 MySQL 僅允許本地連線,當應用與資料庫部署在不同伺服器時,必須開啟遠程訪問權限並放行網路埠。

方法一:修改 user 表(推薦,直觀簡單)

  1. 登入 MySQL
    mysql -u root -p
  2. 切換至 mysql 系統庫並修改 host 欄位
    USE mysql;
    UPDATE user SET host = '%' WHERE user = 'root';
    SELECT host, user FROM user;  -- 確認變更
    FLUSH PRIVILEGES;

說明:

  • % 代表允許任意 IP 連線(生產環境建議限制具體 IP)
  • 若僅允許特定 IP(如 192.168.1.123),將 % 替換為該 IP

方法二:GRANT 授權法(適用於建立新帳號)

-- 建立帳號並授權遠程連線
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON mydb.* TO 'app_user'@'%';
FLUSH PRIVILEGES;

防火牆開放 3306 埠(iptables)

  1. 編輯規則檔
    vi /etc/sysconfig/iptables
  2. 在 icmp-host-prohibited 拒絕規則之前插入
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
  3. 重啟防火牆生效
    service iptables restart

完整 iptables 範例配置(供參考)

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

驗證連線

# 客戶端測試
mysql -h 192.168.x.x -u root -p

# 或使用 telnet 測試埠通達性
telnet 192.168.x.x 3306

安全建議

  • 生產環境禁止使用 root 遠程登入,建立專用應用帳號並限制來源 IP
  • 配合 bind-address = 0.0.0.0(my.cnf)監聽所有介面
  • 啟用 SSL 加密傳輸:REQUIRE SSL
  • 定期審計 mysql.user 表,移除無用帳號
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved