| 選項 | 功能 | 建議值 (生產) | 風險等級 |
|---|---|---|---|
--allow-suspicious-udfs | 允許載入無輔助符號的 UDF | OFF (預設) | 🔴 高 |
--local-infile[=0|1] | 允許客戶端 LOAD DATA LOCAL INFILE | 0 (禁用) | 🟠 中 |
--old-passwords | 新密碼產生舊格式雜湊 (pre-4.1) | OFF | 🔴 高 (降級安全) |
--safe-user-create | GRANT 建立用戶需 mysql.user INSERT 權限 | ON | 🟢 低 |
--secure-auth | 拒絕舊格式密碼帳號登入 | ON (5.6+ 預設) | 🟢 低 |
--skip-grant-tables | 完全跳過權限系統 (所有人全權限) | 絕禁生產 | 🔴 極高 |
--skip-name-resolve | 禁用主機名 DNS 反查,僅允許 IP/localhost | ON | 🟢 低 |
--skip-networking | 禁用 TCP/IP,僅 Unix Socket | 視架構 | 🟡 中 |
--skip-show-database | SHOW DATABASES 僅顯示有權限的庫 | ON | 🟢 低 |
FLUSH PRIVILEGES → 移除參數重啟。/etc/passwd、.ssh/id_rsa)。--local-infile=0,客戶端需顯式 --local-infile=1 雙向確認。Host 欄位僅用 IP/localhost,無主機名。-- 授予建立用戶權限但不給修改權限欄位
GRANT INSERT(User) ON mysql.user TO 'admin'@'localhost';
--safe-show-database:5.1+ 由 SHOW DATABASES 權限取代,參數無效。[mysqld]
# 安全基線
skip-name-resolve
secure-auth
safe-user-create
skip-show-database
local-infile=0
allow-suspicious-udfs=0
# 網路
bind-address = 10.0.0.10 # 僅內網 IP
# skip-networking # 若僅本機 Unix Socket 存取
# 審計
log-raw = ON
log_warnings = 2
mysqld 安全選項是纵深防禦第一層。原則:默認拒絕、顯式放行、最小權限、審計可追溯。將上述基線納入自動化部署模板,定期掃描偏差,構建可合規的資料庫安全態勢。