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

MySQL 啟用遠端連線完整設定:帳號授權、bind-address、防火牆與驗證

     編輯:MySQL 資料庫相關知識

MySQL 預設僅允許本機 localhost 連線。開啟遠端存取需完成 **三大動作**:建立允許遠端的帳號、調整 bind-address 監聽介面、開放防火牆 3306 埠。本文提供生產級設定步驟與安全清單。

步驟一:建立遠端存取帳號 (最小權限原則)

-- 登入本機 root
mysql -u root -p

-- 建立帳號限定來源 IP (最安全)
CREATE USER 'app_user'@'192.168.1.100' IDENTIFIED BY 'Str0ngP@ss!';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app_user'@'192.168.1.100';

-- 或允許特定網段 (CIDR 寫法不支援,需用通配符)
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'Str0ngP@ss!';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app_user'@'192.168.1.%';

-- 僅測試環境:允許任意 IP (生產嚴禁)
CREATE USER 'app_user'@'%' IDENTIFIED BY 'Str0ngP@ss!';
GRANT ALL PRIVILEGES ON mydb.* TO 'app_user'@'%';

FLUSH PRIVILEGES; -- 立即生效

-- 8.0 相容舊驅動需指定認證插件
ALTER USER 'app_user'@'%' IDENTIFIED WITH mysql_native_password BY 'Str0ngP@ss!';

步驟二:調整 my.cnf / my.ini 監聽介面

[mysqld]
# 5.7/8.0 預設 bind-address=127.0.0.1 (僅回環)
# 方案 A:註解掉 → 監聽所有介面 (0.0.0.0)
# bind-address = 127.0.0.1

# 方案 B:指定內網 IP (推薦,較安全)
bind-address = 192.168.1.50

# 方案 C:8.0 支援多位址
bind-address = 192.168.1.50, 10.0.0.10

# 關鍵:跳過 DNS 反解析,大幅提升連線速度
skip-name-resolve

修改後 **重啟服務**:systemctl restart mysqld (Linux) 或 net stop mysql && net start mysql (Windows)。

步驟三:防火牆/安全組開放 3306

環境指令/操作
CentOS/RHEL 7/8 (firewalld)firewall-cmd --permanent --add-port=3306/tcp --source=192.168.1.0/24 && firewall-cmd --reload
Ubuntu/Debian (ufw)ufw allow from 192.168.1.0/24 to any port 3306
Windows Defender 防火牆進階設定 → 輸入規則 → 新增規則 → 連接埠 TCP 3306 → 允許 → 設定遠端 IP 192.168.1.0/24
AWS Security Group / Azure NSG / GCP Firewall入站規則:TCP 3306,來源 CIDR:192.168.1.0/24 (僅應用伺服器網段)

步驟四:驗證遠端連線

# 客戶端測試
mysql -h 192.168.1.50 -u app_user -p -D mydb

# GUI 工具 (Workbench, DBeaver, DataGrip, Navicat)
# Host: 192.168.1.50, Port: 3306, User: app_user, Password: ******, Database: mydb

常見連線失敗快速排查

  1. Host 'x.x.x.x' is not allowed to connect → SELECT user, host FROM mysql.user; 確認帳號 host 匹配。
  2. Can't connect (10060/110) → 網路不通:telnet 192.168.1.50 3306、netstat -an | grep 3306 確認監聽、防火牆、安全組、VPN 路由。
  3. Authentication plugin 'caching_sha2_password' not loaded → 8.0 預設新插件,舊驅動不支援。ALTER USER 'u'@'%' IDENTIFIED WITH mysql_native_password BY 'pwd';。
  4. SSL required → 帳號有 REQUIRE SSL,客戶端啟用 SSL 或移除要求。

生產環境安全加固清單

  • [ ] 僅開放應用伺服器 CIDR (安全組/防火牆)。
  • [ ] 強制 SSL:REQUIRE SSL + 客戶端驗證 CA。
  • [ ] skip-name-resolve 避免 DNS 延遲。
  • [ ] 定期輪換密碼、審核 mysql.user 異常帳號。
  • [ ] 啟用審計日誌 (audit_log) 記錄登入/查詢。
  • [ ] 讀寫分離:唯讀帳號只連 Replica。
  • [ ] max_connections、thread_cache_size 配合應用連線池調大。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved