萬盛學電腦網

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

MySQL 安全加固全攻略:從密碼策略到權限最小化

核心原則:纏繞防禦,最小權限

資料庫安全非單一設定可解,需從帳號、網路、檔案系統、審計多層面佈防。

一、 強制密碼策略

  • 所有帳號必須設定強密碼,禁用匿名帳號、空密碼帳號。
  • 定期輪換密碼,尤其 root、admin 等高權限帳號。
  • 修改密碼推薦使用 SET PASSWORD 或 ALTER USER,避免直接操作 mysql.user 表。
-- 推薦方式 (MySQL 5.7+)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStr0ngP@ss!';
FLUSH PRIVILEGES;

二、 服務帳號隔離

  • 嚴禁以 OS root/Administrator 執行 mysqld,否則 FILE 權限可寫入系統關鍵檔案 (如 /root/.bashrc)。
  • 建立專用 mysql 系統帳號,僅擁有資料目錄讀寫權限。
  • /etc/my.cnf 或 my.ini 中固化:
[mysqld]
user=mysql

三、 禁用危險功能

功能風險禁用方式
符號連結root 執行時可刪除任意系統檔案--skip-symbolic-links
LOAD DATA LOCAL可讀取伺服器任意可讀檔案 (如 /etc/passwd)local-infile=0
SELECT ... INTO OUTFILE可寫入伺服器檔案系統僅授予可信帳號 FILE 權限

四、 權限最小化矩陣

五、 網路層防護

  • 僅在 127.0.0.1 或內網 VIP 監聽:bind-address=192.168.1.10
  • 防火牆僅開放應用伺服器 IP 存取 3306。
  • 授權表使用 IP 而非主機名,避免 DNS 劫持:GRANT ... TO 'app'@'10.0.1.%'
  • 啟用 SSL 傳輸:require_secure_transport=ON

六、 審計與監控

  • 啟用 log-raw、log_slow_queries、log_error。
  • 部署 MariaDB Audit Plugin 或 MySQL Enterprise Audit 記錄所有 DML/DDL。
  • 定期審核 mysql.user、db、tables_priv 異常授權。

七、 連線數限制

[mysqld]
max_user_connections = 200  -- 單帳號最大連線
max_connections = 1000      -- 全域最大連線

防止單一失控應用耗盡連線池導致拒絕服務。

結語

安全是持續過程,而非一次性配置。建議每季度執行:密碼輪換、權限收攏、審計日誌分析、滲透測試。

copyright © 萬盛學電腦網 all rights reserved
權限僅授予風險說明
SUPERDBA / 監控帳號可 KILL 連線、修改全域變數、控制複寫
PROCESS監控工具SHOW PROCESSLIST 可見敏感 SQL (含明文密碼)
FILE備份/ETL 專用帳號可讀寫伺服器檔案系統
CREATE USER帳號管理角色可建立/刪除帳號