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

開啟 MySQL 遠程訪問完整配置:bind-address、用戶授權、防火牆、驗證測試

     編輯:MySQL 綜合教學

核心配置三步驟

1. 修改綁定地址 (my.cnf / my.ini)


[mysqld]
# 註釋或修改 bind-address
# bind-address = 127.0.0.1  # 默認僅本地
bind-address = 0.0.0.0       # 監聽所有網卡(推薦)
# 或指定具體業務 IP
# bind-address = 192.168.1.100

修改後必須重啟 MySQL:systemctl restart mysqld 或 net restart mysql

2. 創建遠程授權用戶


-- 方式一:任意主機訪問(開發/測試)
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPass123!';
GRANT SELECT,INSERT,UPDATE,DELETE ON app_db.* TO 'app_user'@'%';

-- 方式二:指定網段(生產推薦)
CREATE USER 'app_user'@'10.0.%' IDENTIFIED BY 'StrongPass123!';
GRANT SELECT,INSERT,UPDATE,DELETE ON app_db.* TO 'app_user'@'10.0.%';

-- 方式三:指定單 IP
CREATE USER 'app_user'@'192.168.1.50' IDENTIFIED BY 'StrongPass123!';
GRANT SELECT,INSERT,UPDATE,DELETE ON app_db.* TO 'app_user'@'192.168.1.50';

FLUSH PRIVILEGES;

3. 防火牆放行 3306 端口


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

# Ubuntu ufw
ufw allow 3306/tcp

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

# Windows 防火牆
netsh advfirewall firewall add rule name="MySQL 3306" dir=in action=allow protocol=TCP localport=3306

驗證測試

本機驗證監聽


netstat -ntlp | grep 3306
# 輸出應包含 0.0.0.0:3306 或指定 IP:3306
ss -ntlp | grep 3306

遠程客戶端測試


# 命令行
mysql -h 192.168.1.100 -u app_user -p -e "SELECT USER(), VERSION();"

# 圖形工具
# Navicat / DataGrip / Workbench / DBeaver
# Host: 192.168.1.100, Port: 3306, User: app_user, Password: ******

排查連接失敗

現象可能原因排查命令
Connection refusedbind-address 錯誤/服務未啟動netstat -ntlp, systemctl status mysqld
Host 'x.x.x.x' is not allowed用戶主機授權不匹配SELECT user, host FROM mysql.user;
Access denied密碼錯誤/權限不足SHOW GRANTS FOR 'user'@'host';
Timeout防火牆/安全組/網絡不通telnet ip 3306, nc -zv ip 3306
SSL connection error8.0 默認 SSL,客戶端不支持連接串添加 ?useSSL=false 或配置 SSL

安全加固建議

  1. 禁用 root 遠程登錄:DELETE FROM mysql.user WHERE user='root' AND host!='localhost'; FLUSH PRIVILEGES;
  2. 最小權限授權:業務賬號僅授增刪改查,禁止 DDL、管理權限
  3. 啟用 SSL 加密傳輸:生產環境配置 require_secure_transport=ON
  4. 限制訪問來源:安全組/防火牆僅放行應用服務器 IP 段
  5. 審計日誌:啟用 audit_log 插件記錄登錄、DDL、敏感操作
  6. 定期輪換密碼:配合 validate_password 強制過期策略

MySQL 8.0 特殊說明

  • 默認認證插件 caching_sha2_password,舊客戶端需指定 --default-auth=mysql_native_password 或創建用戶時指定 IDENTIFIED WITH mysql_native_password BY 'pass'
  • 支持角色管理,簡化批量授權
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved