萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 綁定特定 IP 監聽:bind-address 完整配置指南

為什麼要限制 MySQL 監聽地址?

預設安裝下,MySQL 會綁定 0.0.0.0 監聽所有網路介面,這意味著任何能連通伺服器 3306 端口的主機都能嘗試連線。對於僅供本機應用存取的資料庫,這構成不必要的攻擊面。將監聽限制在 127.0.0.1(或內網 IP),是資料庫安全加固的第一步。

方法一:修改 my.cnf(推薦,持久化生效)

[mysqld]
bind-address = 127.0.0.1
# 或指定內網 IP,如 192.168.1.10
# bind-address = 192.168.1.10

修改後重啟服務:

systemctl restart mysqld
# 或
service mysql restart

驗證生效:

netstat -tlnp | grep 3306
# 預期輸出
tcp  0  0 127.0.0.1:3306  0.0.0.0:*  LISTEN  1234/mysqld

方法二:啟動腳本傳參(臨時/舊版相容)

編輯 /etc/init.d/mysql(或 systemd unit 檔),在 mysqld_safe 呼叫行追加參數:

$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file --bind-address=127.0.0.1 &

此法優先級高於設定檔,適合測試或無權改動 my.cnf 時使用。

進階:多實例與多 IP 綁定

MySQL 8.0+ 支援逗號分隔多地址:

bind-address = 127.0.0.1,192.168.1.10,10.0.0.5

或使用 * 監聽所有 IPv4,:: 監聽所有 IPv6。生產環境建議顯式列出業務真實需要的 IP。

常見坑點提醒

  • Docker 環境:容器內 127.0.0.1 僅限容器內存取,宿主機或其他容器需用 0.0.0.0 或宿主機網路模式
  • IPv6 雙棧:若啟用 IPv6,記得同時綁定 ::1 或具體 IPv6 位址
  • 防火牆配合:綁定內網 IP 後,仍需在 iptables/security group 限制來源 IP 段
  • 複寫/從庫:主從同步需雙向通訊,從庫 IP 必須在主庫允許清單中

安全基線建議

  1. 僅本機應用:bind-address = 127.0.0.1
  2. 內網分布式:綁定內網 IP,配合 VPC/安全組
  3. 禁用公網 IP 直連:跳板機/SSH 隧道/VPN 代理存取
  4. 定期 netstat -tlnp 審計監聽狀態
copyright © 萬盛學電腦網 all rights reserved