首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 遠程訪問配置全流程:授權帳號、防火牆放行 3306、雲安全組實戰

     編輯:MySQL 綜合教學

前言

MySQL 預設僅允許本地連線。本文涵蓋建立遠程帳號、修改綁定地址、本機防火牆、雲廠商安全組四大層面,確保遠程連線暢通無阻。

步驟 1:建立遠程專用帳號(最小權限原則)

mysql -u root -p
-- 建立帳號,限定來源 IP 段(生產建議具體 IP)
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPass!2024';
-- 或允許任意 IP(僅測試環境)
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPass!2024';

-- 授權指定庫/表
GRANT SELECT, INSERT, UPDATE, DELETE ON `mydb`.* TO 'app_user'@'192.168.1.%';
FLUSH PRIVILEGES;

切勿直接授權 root@%,極高風險。

步驟 2:修改 MySQL 綁定地址

# /etc/my.cnf 或 /etc/mysql/my.cnf
[mysqld]
bind-address = 0.0.0.0   # 監聽所有網卡;或具體內網 IP
# skip-name-resolve       # 避免 DNS 解析延遲(可選)

重啟生效:systemctl restart mysqld

步驟 3:本機防火牆放行 3306

firewalld (CentOS 7+/RHEL 7+)

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="3306" accept'
firewall-cmd --reload

iptables (舊系統)

iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 3306 -j ACCEPT
service iptables save

Windows 防火牆 (圖形/命令列)

netsh advfirewall firewall add rule name="MySQL 3306" dir=in action=allow protocol=TCP localport=3306 remoteip=192.168.1.0/24

步驟 4:雲廠商安全組/防火牆(阿里雲/騰訊雲/AWS/Azure)

  • 進入控制台 → 安全組/網路 ACL → 入站規則。
  • 協議:TCP,埠:3306,來源:應用伺服器 IP 或 CIDR(如 192.168.1.0/24)。
  • 嚴禁 0.0.0.0/0 開放 3306。

驗證連線

# 客戶端測試
mysql -h 192.168.1.109 -u app_user -p -P 3306

# 或使用 telnet/nc 測試埠通達性
telnet 192.168.1.109 3306
nc -zv 192.168.1.109 3306

常見坑點排查清單

  1. bind-address 仍為 127.0.0.1。
  2. 帳號 Host 欄位不匹配(% 不包含 localhost,需額外建 user@localhost)。
  3. 防火牆規則未生效/順序錯誤(拒絕規則在允許之前)。
  4. 雲安全組未同步/關聯錯誤實例。
  5. SELinux/AppArmor 阻擋(setsebool -P mysql_connect_any 1)。
  6. MySQL 8.0 預設 caching_sha2_password,舊驅動需改用 mysql_native_password 或升級驅動。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved