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

Linux MySQL 遠端連線超時?多半是防火牆沒放行 3306 埠

     編輯:MySQL 資料庫相關知識

現象

本地 Windows MySQL,Putty 連 Linux 跳板機,再用 JDBC/客戶端連回 Windows MySQL,報:

java.net.SocketException: Connection timed out

根因

Windows XP/7/10 內建防火牆預設封鎖 3306 埠入站。網路上常見「授權表 host=%、grant all」等資料庫層面方案均無效,因封包根本到不了 mysqld。

解決:開放防火牆規則

圖形介面 (Win10/11)

  1. 控制台 → Windows Defender 防火牆 → 進階設定。
  2. 入站規則 → 新增規則 → 連接埠 → TCP → 特定本地連接埠 3306。
  3. 允許連線 → 全部設定檔 (網域/專用/公用) → 命名「MySQL 3306」。

命令列 (一鍵)

netsh advfirewall firewall add rule name="MySQL 3306" dir=in action=allow protocol=TCP localport=3306

雲主機/伺服器額外檢查

  • 雲廠商安全組/防火牆:入站規則放行 3306(或自訂埠)。
  • Linux 端 iptables -A INPUT -p tcp --dport 3306 -j ACCEPT / firewall-cmd --add-port=3306/tcp --permanent。
  • MySQL 配置 bind-address=0.0.0.0 (或具體 IP),重啟服務。

驗證

# 客戶端機器
telnet  3306
nc -zv  3306
# 顯示 Connected / succeeded 即通

安全建議

  • 僅放行應用伺服器 IP 段(CIDR),拒絕 0.0.0.0/0。
  • 啟用 SSL 傳輸(REQUIRE SSL)。
  • 強密碼、定期輪換、最小權限帳號。

下次遇到「Connection timed out」,先查防火牆,再查授權表,事半功倍。

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