萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 遠程訪問授權全流程:GRANT 命令、phpMyAdmin 圖形化、防火牆端口放行

核心授權命令

1. 允許任意 IP 訪問(開發/測試環境)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'StrongPassword#123' WITH GRANT OPTION;
FLUSH PRIVILEGES;

2. 限定特定 IP/網段(生產環境強制)

-- 單 IP
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY 'StrongPassword#123' WITH GRANT OPTION;

-- 網段(需 MySQL 8.0+ 支援 CIDR,5.7 用通配符)
GRANT SELECT, INSERT, UPDATE, DELETE ON `app_db`.* TO 'app_user'@'10.0.1.%' IDENTIFIED BY 'AppPass#456';

-- 特定主機名(需 DNS 解析正確,建議 skip-name-resolve=OFF)
GRANT ALL ON *.* TO 'root'@'app-server-01' IDENTIFIED BY 'StrongPassword#123';

3. 權限分級模板

角色權限集合適用場景
超級管理員ALL PRIVILEGES + WITH GRANT OPTIONDBA 專用,極少數人
應用讀寫SELECT, INSERT, UPDATE, DELETE, EXECUTE微服務賬號
應用只讀SELECT報表、BI、從庫讀取
開發調試SELECT, SHOW VIEW, PROCESS開發環境,無寫權限
備份賬號SELECT, LOCK TABLES, REPLICATION CLIENT, SHOW DATABASESmysqldump/xtrabackup
監控賬號PROCESS, REPLICATION CLIENT, SELECT ON performance_schema.*Prometheus Exporter

phpMyAdmin 圖形化配置步驟

  1. 登入 phpMyAdmin → 點擊頂部「用戶帳號」/「權限」。
  2. 點擊「新增用戶帳號」:
    用戶名:app_user
    主機名:10.0.1.%(或具體 IP)
    密碼:生成強密碼 → 重新輸入確認。
  3. 「資料庫特定權限」選擇目標庫 → 勾選 SELECT, INSERT, UPDATE, DELETE, INDEX, CREATE, ALTER, DROP 等。
    或「全局權限」頁面按角色模板勾選。
  4. 執行 → 頁面提示「已新增用戶」。
  5. 關鍵步驟:返回首頁 → 點擊「重新載入權限」(執行 FLUSH PRIVILEGES)。

防火牆端口放行(必須)

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

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

# 阿里云/騰訊雲安全組
# 入站規則:TCP 3306,來源:應用服務器安全組/具體 CIDR,策略:允許

驗證連通性

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

# 檢查監聽
netstat -antp | grep 3306
# 或
ss -antp | grep 3306

# 抓包確認
tcpdump -i eth0 -nn port 3306

安全加固清單

  • ✅ 禁用 root@%,僅允許 root@localhost 或跳板機 IP。
  • ✅ 啟用 SSL 傳輸:REQUIRE SSL 在 GRANT 中指定。
  • ✅ 定期輪換密碼,配合 validate_password 強制複雜度。
  • ✅ 審計日誌:MariaDB Audit Plugin 或 MySQL Enterprise Audit 記錄所有登入/操作。
  • ✅ 異常登入告警:解析錯誤日誌 Access denied、Failed login 觸發告警。
copyright © 萬盛學電腦網 all rights reserved