預設安裝下,MySQL 會綁定 0.0.0.0 監聽所有網路介面,這意味著任何能連通伺服器 3306 端口的主機都能嘗試連線。對於僅供本機應用存取的資料庫,這構成不必要的攻擊面。將監聽限制在 127.0.0.1(或內網 IP),是資料庫安全加固的第一步。
[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 時使用。
MySQL 8.0+ 支援逗號分隔多地址:
bind-address = 127.0.0.1,192.168.1.10,10.0.0.5
或使用 * 監聽所有 IPv4,:: 監聽所有 IPv6。生產環境建議顯式列出業務真實需要的 IP。
127.0.0.1 僅限容器內存取,宿主機或其他容器需用 0.0.0.0 或宿主機網路模式::1 或具體 IPv6 位址bind-address = 127.0.0.1netstat -tlnp 審計監聽狀態