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

Linux MySQL 3306 埠被 iptables 阻擋解決:規則插入位置關鍵

     編輯:MySQL 綜合教學

帳號授權無誤、bind-address=0.0.0.0、服務正常,但遠程仍無法連線,多半是 iptables 規則順序導致 3306 被隱性 DROP 攔截。關鍵在於 規則必須插在 ICMP 接受規則之前。

錯誤示範(追加到尾部無效)

vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
service iptables restart
# 仍不通,因為後面隱性 DROP 已生效

正確做法:插入到 ICMP 規則前

# 找到這行
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
# 在其**上一行**插入
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
service iptables restart
# 立即生效

驗證規則順序

iptables -L -n -v --line-numbers
# 確認 3306 ACCEPT 行號 < ICMP ACCEPT 行號 < REJECT/DROP 行號

現代替代方案

  • firewalld (CentOS 7+):firewall-cmd --permanent --add-port=3306/tcp && firewall-cmd --reload
  • ufw (Ubuntu/Debian):ufw allow 3306/tcp
  • 雲廠商安全組:控制台入站規則開放 3306,來源 IP 建議限定應用伺服器 CIDR。

核心原則

iptables 規則自上而下首次匹配生效,ACCEPT 必須置於任何 DROP/REJECT 之前。養成 iptables -I (insert) 而非 -A (append) 的習慣可避免 90% 此類問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved