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

MySQL 開啟遠程訪問授權:GRANT 命令、防火牆、bind-address 三步走配置

     編輯:MySQL 綜合教學

核心授權命令

mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
  • user:目標用戶名(如 app_user)
  • %':允許任意主機連接(生產建議限定具體 IP/網段)
  • WITH GRANT OPTION:允許該用戶再授權(謹慎使用)

安全強化版(推薦)

-- 僅允許應用服務器網段
GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON app_db.* TO 'app_user'@'10.0.0.%' IDENTIFIED BY 'StrongPass#2024';
FLUSH PRIVILEGES;

配置文件同步修改

[mysqld]
bind-address = 0.0.0.0  # 或具體內網 IP,如 10.0.0.10
# skip-networking 註釋掉或刪除

重啟生效:systemctl restart mysqld

防火牆放行

# firewalld (CentOS 7+)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port protocol="tcp" port="3306" accept'
firewall-cmd --reload

# iptables
iptables -A INPUT -s 10.0.0.0/8 -p tcp --dport 3306 -j ACCEPT
service iptables save

驗證連通性

# 從應用服務器
mysql -h 10.0.0.10 -u app_user -p -e "SELECT 1;"
telnet 10.0.0.10 3306
nc -zv 10.0.0.10 3306

常見踩坑

原則:最小權限、具體宿主、強密碼、網絡隔離、加密傳輸。公網環境務必啟用 TLS(require_secure_transport=ON)並配合 SSH 隧道/VPN。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
現象原因修正
Host 'x.x.x.x' is not allowed to connect用戶宿主不匹配檢查 SELECT User, Host FROM mysql.user; 確認 % 或具體 IP
Connection refusedbind-address 未改 / 防火牆攔截 / 服務未重啟依次排查三項
Access denied for user (using password: YES)密碼錯誤 / plugin 不匹配 (caching_sha2_password vs mysql_native_password)重設密碼 ALTER USER ... IDENTIFIED WITH mysql_native_password BY 'pass';