萬盛學電腦網

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

MySQL 系統內部安全:資料目錄權限、檔案屬性與主機防護實務

資料目錄結構與檔案類型

MySQL 以資料庫為目錄,表對應三個檔案:

  • .frm:表結構定義(所有引擎)。
  • .ibd (InnoDB 獨立表空間) / .MYD (MyISAM 資料) / .MYI (MyISAM 索引)。

預設資料目錄:/var/lib/mysql (Linux)、C:\ProgramData\MySQL\MySQL Server 8.0\Data (Windows)。

檔案權限黃金法則

對象擁有者權限指令
資料目錄及所有子項mysql:mysql700 (drwx------)chown -R mysql:mysql /var/lib/mysql && chmod -R 700 /var/lib/mysql
錯誤日誌、慢查詢日誌mysql:mysql640 (-rw-r-----)chmod 640 /var/log/mysql/*.log
設定檔root:root644chmod 644 /etc/my.cnf

原則:只有啟動 MySQL 的 OS 用戶(通常是 mysql)能讀寫資料檔,防止本地用戶直接複製檔案竊取資料(繞過 SQL 權限)。

歷史版本權限演進警示

  • MySQL 3.21.x:資料目錄 775 → 任意本地用戶可讀,**極度危險**。
  • MySQL 3.22.x:770 → 同組用戶可讀寫,**仍不安全**。
  • MySQL 3.23.x+:700 → 僅 mysql 用戶可存取,**標準安全基線**。

升級舊實例時務必檢查並修正權限。

主機層級防護(第一道防線)

  1. 最小化暴露面:關閉非必要埠、服務;SSH 僅允許金鑰登入、禁用 root 登入、修改預設埠。
  2. 防火牆/安全群組:僅允許應用伺服器 IP 存取 3306/33060。
  3. 磁碟加密:LUKS (Linux) / BitLocker (Windows) 加密資料卷,防物理竊取。
  4. 強制 SSL:require_secure_transport=ON,所有連線必須 TLS。
  5. 審計與入侵偵測:Auditd 監控關鍵檔案變更、Fail2ban 防暴力破解、Wazuh/OSSEC HIDS。
  6. 定期修補:OS、MySQL、OpenSSL、系統庫及時打補丁。

資料庫層級補充

  • 啟用 audit_log 記錄所有 DDL/DML/登入事件。
  • 敏感欄位使用 透明加密 (TDE) 或 應用層加密(字段級)。
  • 啟用 local_infile=OFF 防止 LOAD DATA LOCAL 任意讀取客戶端檔案。
  • 設定 secure_file_priv 限制 SELECT ... INTO OUTFILE 目錄。

驗證腳本

#!/bin/bash
DATADIR="/var/lib/mysql"
echo "=== 檢查擁有者 ==="
find "$DATADIR" ! -user mysql -ls
echo "=== 檢查權限過寬 ==="
find "$DATADIR" -type d ! -perm 700 -ls
find "$DATADIR" -type f ! -perm 600 -ls
echo "=== 完成 ==="

將安全性內化為基礎設施代碼(Ansible/Terraform),實現持續合規。

copyright © 萬盛學電腦網 all rights reserved