MySQL 管理員需負責資料安全性與完整性。安全分為兩層:**內部安全**(檔案系統層級,防本機帳號攻擊)與 **外部安全**(網路層級,防未授權客戶端連線)。本文詳細說明雙重防線建立方法。
若本機其他使用者能直接讀寫資料目錄,網路授權再完美也無用。必須保護:
.MYD, .MYI, .frm)。GRANT, SET PASSWORD 明文密碼)。mysql_install_db 初始化,擁有 root 權限。test 資料庫目錄。SELECT * 讀取所有資料。ls -l 資料目錄 # 尋找 "group" 和 "other" 有 r/w/x 權限的檔案/目錄
drwx------ 2 mysqladm mysqlgrp 512 Apr 16 manager drwxr-x--- 2 mysqladm mysqlgrp 512 Apr 16 test # 目錄 750 (擁有者全權、群組讀執行、其他無) # 檔案 640 (擁有者讀寫、群組讀取、其他無)
核心機制:mysql 系統資料庫中的授權表(user, db, host, tables_priv, columns_priv)。
PASSWORD() 加密存儲)。User='')。Host 欄位,避免 % (任意主機)。MySQL 使用雜湊加密存儲密碼,驗證時挑戰-回應機制,**密碼不在網路傳輸**。但 GRANT/SET PASSWORD 執行時明文寫入日誌,**日誌檔案必須嚴格保護**。
| 檢查項目 | 標準 |
|---|---|
| 資料目錄權限 | 750 (目錄) / 640 (檔案),擁有者 mysql:mysql |
| 日誌檔案權限 | 640,非 mysql 帳號不可讀 |
| root 密碼 | 已設定強密碼 |
| 匿名帳號 | 已刪除 |
| 遠端 root 登入 | 已禁止 (Host != %) |
| 防火牆 | 僅開放必要 IP 存取 3306 |
| SSL 連線 | 生產環境強制啟用 |