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

MySQL 遠程訪問配置指南:從用戶授權到防火牆放行全流程

     編輯:MySQL 資料庫相關知識

核心原理

MySQL 訪問控制基於 用戶@主機 模型。默認 root@localhost 僅允許本地連接,遠程訪問需顯式授權:

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

逐步配置流程

1. 創建遠程訪問用戶(推薦不使用 root)

-- 登錄 MySQL
mysql -uroot -p

-- 創建用戶,允許任意主機(%)訪問
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongP@ssw0rd!';

-- 授予具體庫表權限(最小化原則)
GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `myapp`.* TO 'app_user'@'%';

-- 或授予所有權限(僅受信任內網/管理賬號)
GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'%' IDENTIFIED BY 'AdminP@ss!' WITH GRANT OPTION;

-- 刷新權限生效
FLUSH PRIVILEGES;

2. 修改綁定地址(關鍵步驟)

編輯 /etc/my.cnf(Windows 為 my.ini),[mysqld] 區段:

# 註釋或刪除這行,默認綁定 127.0.0.1 僅本地可訪問
# bind-address = 127.0.0.1

# 或顯式綁定所有介面
bind-address = 0.0.0.0

# 生產環境建議:綁定具體內網 IP
# bind-address = 192.168.1.100
修改後必須 重啟 MySQL 服務 生效:systemctl restart mysqld

3. 防火牆放行端口

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

# Ubuntu 18.04+ (ufw)
ufw allow 3306/tcp

# iptables 通用
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save

# 雲服務器安全組(阿里云/騰訊雲/AWS)
# 控制台 → 安全組 → 入站規則 → 添加 TCP 3306,來源設置為具體應用服務器 CIDR

4. 驗證連通性

# 客戶機測試
mysql -uapp_user -p -h 192.168.1.100 -P 3306

# 或使用 telnet/nc 測試端口通達
telnet 192.168.1.100 3306
nc -zv 192.168.1.100 3306

安全加固清單(生產環境必做)

措施實施方式風險降低
禁用 root 遠程登錄確保無 root@% 用戶;DROP USER 'root'@'%';防暴力破解最高權限
強密碼策略validate_password 組件強制長度/複雜度防弱密碼猜解
限制訪問來源 IP'user'@'192.168.1.%' 或安全組 CIDR縮小攻擊面
啟用 SSL 加密傳輸require_secure_transport=ON,配置憑證防中間人竊聽
修改默認端口port=33061 + 防火牆/安全組同步修改減少自動掃描噪音
審計日志安裝 MariaDB Audit Plugin 或 MySQL Enterprise Audit事後追溯

常見連接失敗排查

現象可能原因排查命令
ERROR 1130 (HY000): Host 'x.x.x.x' is not allowed用戶主機不匹配SELECT user, host FROM mysql.user;
ERROR 2003 (HY000): Can't connect to MySQL server端口未監聽/防火牆阻擋netstat -tunlp | grep 3306、firewall-cmd --list-ports
ERROR 1045 (28000): Access denied密碼錯誤/權限不足SHOW GRANTS FOR 'user'@'host';
SSL connection error客戶端/服務端 SSL 配置不匹配mysql --ssl-mode=DISABLED ... 測試
黃金法則: 「最小權限、最小暴露、加密傳輸、審計可追溯」—— 任何遠程訪問配置上線前必須通過安全審核清單。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved