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

MySQL 綁定特定 IP 監聽配置指南:bind-address 參數、啟動腳本修改與驗證方法

     編輯:MySQL 資料庫相關知識

兩種配置方式

方式一:my.cnf 配置 (推薦、持久化)

[mysqld]
bind-address = 127.0.0.1  # 僅本機回環
# bind-address = 10.0.0.10  # 僅特定內網 IP
# bind-address = 0.0.0.0    # 所有介面 (預設行為)

修改後 systemctl restart mysqld 生效。

方式二:啟動腳本參數 (臨時、舊版相容)

# 編輯 /etc/init.d/mysqld 或 mysqld_safe 調用行
$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file --bind-address=127.0.0.1 &

重啟服務生效。

驗證監聽地址

# netstat (傳統)
netstat -ltnp | grep mysqld
# 輸出應顯示
tcp  0  0 127.0.0.1:3306  0.0.0.0:*  LISTEN  1234/mysqld

# ss (現代)
ss -ltnp | grep mysqld

# MySQL 客戶端驗證
mysql -h 127.0.0.1 -u root -p -e "SELECT 'OK';"
# 遠端 IP 應連線失敗 (Connection refused / timeout)

常見問題排查

現象原因解決
仍顯示 0.0.0.0:3306my.cnf 被後載入配置覆蓋mysqld --help --verbose | grep -A1 'bind-address' 確認實際生效值
本機連線失敗客戶端用 hostname 解析到外網 IP客戶端明確 -h 127.0.0.1 或 --protocol=tcp
Docker 容器無法連線容器內 bind 127.0.0.1,宿主機無法存取容器 bind-address=0.0.0.0,宿主機防火牆/安全組控制存取

安全最佳實踐

  • 生產資料庫:bind-address = 內網管理 IP,拒絕公網直連。
  • 應用同機:bind-address = 127.0.0.1,Unix Socket 更高效 (--protocol=socket)。
  • 多實例:每實例不同 IP:Port 組合,避免衝突。
  • 配合:skip-name-resolve、防火牆白名單、SSL/TLS 強制加密。

結語

bind-address 是 MySQL網路暴露面控制的第一道防線。標準化部署:my.cnf 顯式配置 → 重啟驗證 netstat/ss → 客戶端連線測試 → 納入基線掃描,確保資料庫僅在受信網路介面監聽。

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