MySQL 預設連接埠 3306 與修改方法|完整安全性指南

1. MySQL 的預設連接埠是什麼?

MySQL 的連接埠號碼及其角色

MySQL 預設使用 3306 埠 進行通訊。連接埠號碼是用來區分網路上多個服務的編號,也是 TCP/IP 協定中的重要元素。透過不同的連接埠號碼,各種服務可以在同一台伺服器上同時運作。

在 MySQL 中,客戶端會透過 3306 埠連線至伺服器並進行資料庫操作。例如,MySQL Workbench 或其他資料庫工具都會使用此埠來存取資料庫。

為什麼使用 3306 埠?

3306 埠是 MySQL 的標準預設連接埠,在大多數安裝環境中都會使用。由於此埠為預設值,應用程式開發者無需進行額外設定即可連線資料庫,使用上非常方便。不過,因為安全風險較高,因此需要妥善管理。

2. 如何確認 MySQL 的連接埠

透過指令查詢

要確認 MySQL 伺服器目前使用的連接埠,可以輸入以下指令:

SHOW VARIABLES LIKE 'port';

執行後會顯示伺服器使用的連接埠號碼。通常是預設的 3306 埠,但也可能因設定而有所不同。

透過設定檔查詢

也可以透過檢視 my.cnf(Windows 則為 my.ini)設定檔來確認連接埠號碼。這些檔案通常位於以下位置:

  • Linux: /etc/mysql/my.cnf
  • Windows: C:ProgramDataMySQLMySQL Servermy.ini

在檔案中 port 參數所設定的值,就是 MySQL 使用的連接埠號碼。

[mysqld]
port=3306

透過檢視此檔案,即可確認目前的連接埠設定。

3. 如何更改 MySQL 的連接埠

更改連接埠的原因

更改 MySQL 預設連接埠有幾個原因。首先,為了安全性,因為攻擊者經常針對預設的 3306 埠發動攻擊,改用其他連接埠可以降低風險。此外,如果在同一台伺服器上運行多個 MySQL 實例,就必須使用不同的連接埠。

更改連接埠的步驟

要更改 MySQL 連接埠,需要編輯設定檔 my.cnf。例如要改成 3307,可以這樣設定:

[mysqld]
port=3307

儲存設定後,重新啟動 MySQL 伺服器。在 Linux 中可使用以下指令:

sudo systemctl restart mysql

在 Windows 中則需要重新啟動 MySQL 服務。另外,請記得同步更新防火牆規則,以允許新的連接埠。

4. 安全性考量

開放連接埠的風險

如果將 MySQL 連接埠開放至外部,會增加安全風險。攻擊者可能透過連接埠掃描,針對 3306 埠嘗試未授權存取。因此需要實施額外的防護措施。

防火牆與存取限制

透過設定防火牆,僅允許特定 IP 位址連線,可有效防止非法存取。例如,在 Linux 使用 iptables,僅允許指定 IP 存取 3306 埠:

sudo iptables -A INPUT -p tcp -s <允許的IP位址> --dport 3306 -j ACCEPT

另外,建議使用 SSH 隧道 加密 MySQL 連線,避免直接暴露連接埠。

導入 SSL/TLS

為了加密 MySQL 伺服器與客戶端之間的通訊,建議啟用 SSL/TLS。這樣可防止資料在網路傳輸過程中遭到竊聽或竄改。

5. 與 MySQL 連接埠相關的疑難排解

連接埠衝突

當 MySQL 使用的連接埠與其他服務衝突時,可能導致服務無法正常運作。這時需更改 MySQL 的連接埠,依照前述步驟進行修改即可。

外部連線問題

如果外部主機無法連線 MySQL,可能是防火牆或 MySQL 設定檔的問題。要允許外部連線,需要將 MySQL 設定檔中的 bind-address 改為 0.0.0.0,允許所有來源連線。

[mysqld]
bind-address = 0.0.0.0

同時也需要在防火牆中開放對應的連接埠。

6. MySQL 連接埠的最佳實務

使用自訂連接埠

避免使用預設的 3306 埠,改用隨機高位連接埠,是常見的安全性最佳實務。這樣可以降低遭受連接埠掃描攻擊的機率,特別是在允許外部存取時。

監控日誌

定期監控 MySQL 的連線日誌與錯誤日誌,有助於及早偵測安全事件。一旦發現異常存取,應立即處理。日誌監控應作為日常安全維運的一部分。

7. 總結

本文介紹了 MySQL 連接埠的基本知識與安全性對策。雖然大多數情況下會使用預設的 3306 埠,但在必要時可進行修改,並搭配防火牆與 SSH 隧道強化安全性。同時也說明了外部連線常見的疑難排解方式。只要定期監控日誌並落實安全檢查,就能更安心地運行 MySQL 伺服器。