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

MySQL 遠程連線完整配置指南:從網路層到權限體系的逐步落地

     編輯:MySQL 資料庫相關知識

場景與風險提示

開放遠程連線是開發、運維、異地備份的常態需求,但也意味著攻擊面擴大。生產環境務必遵循最小權限原則:僅開放必要 IP、專用賬號、強密碼、SSL 加密、防火牆限制來源。

步驟一:修改綁定地址(網路層)

# 編輯配置檔
vi /etc/mysql/my.cnf   # 或 /etc/my.cnf

# 找到 bind-address 行,註釋或改為 0.0.0.0(監聽所有介面)
# bind-address = 127.0.0.1
bind-address = 0.0.0.0

重啟生效:

systemctl restart mysqld   # systemd
# 或
service mysql restart      # SysVinit

步驟二:防火牆放行 3306 埠(主機層)

# firewalld (CentOS 7+/RHEL 7+)
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# iptables (舊版)
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save

# ufw (Ubuntu/Debian)
ufw allow 3306/tcp

進階:僅允許特定 IP 段:firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="3306" accept'

步驟三:建立遠程存取賬號(權限層)

登入 MySQL:

mysql -u root -p

方案 A:特定 IP 存取(推薦)

CREATE USER 'app_user'@'10.0.0.%' IDENTIFIED BY 'StrongP@ssw0rd!';
GRANT SELECT, INSERT, UPDATE, DELETE ON `mydb`.* TO 'app_user'@'10.0.0.%';
FLUSH PRIVILEGES;

方案 B:通配符存取(僅測試環境)

CREATE USER 'dev_user'@'%' IDENTIFIED BY 'StrongP@ssw0rd!';
GRANT ALL PRIVILEGES ON *.* TO 'dev_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

方案 C:修改既有 root 允許遠程(極不推薦生產用)

UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;

步驟四:驗證連線

# 遠程主機測試
mysql -h 192.168.1.100 -u app_user -p -D mydb

# 檢查連線狀態
SHOW PROCESSLIST;
SELECT USER(), CURRENT_USER();

步驟五:安全加固清單(必做)

  • ✅ 啟用 SSL:REQUIRE SSL 在 GRANT 中指定,配置 ssl_ca/ssl_cert/ssl_key
  • ✅ 密碼策略:validate_password 插件強制複雜度
  • ✅ 連線限制:MAX_CONNECTIONS_PER_HOUR、MAX_USER_CONNECTIONS
  • ✅ 審計日誌:audit_log 記錄所有操作
  • ✅ 定期輪換密鑰,撤銷離職人員權限

常見排錯速查表

現象可能原因排查命令
Connection refusedbind-address、防火牆、服務未啟動ss -ltnp | grep 3306 / firewall-cmd --list-all
Host 'x.x.x.x' is not allowed用戶 Host 欄位不匹配SELECT User, Host FROM mysql.user;
Access denied for user密碼錯誤、權限不足、plugin 不對(caching_sha2_password vs mysql_native_password)SHOW CREATE USER 'u'@'h';
SSL connection error憑證不匹配、版本不支援mysql --ssl-mode=REQUIRED ...
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved