首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 內部安全加固:數據目錄文件權限、日志洩露風險與攻擊場景實測

     編輯:MySQL 資料庫相關知識

MySQL 內部安全:本地用戶如何竊取數據、如何徹底鎖死數據目錄

外部認證再強,若本地用戶可讀寫數據目錄,授權體系形同虛設。本文演示**文件級攻擊實測**,給出**最小權限加固標準操作流**。

攻擊場景實測:普通用戶如何偷走表數據

  1. 攻擊者在同一主機擁有賬戶,數據目錄權限寬鬆(go+r)。
  2. 攻擊者安裝獨立 MySQL 實例(不同端口/數據目錄),執行 mysql_install_db 成為新實例 root。
  3. 將目標表文件(.frm/.ibd/.MYD/.MYI)拷貝到新實例 test 库下。
  4. 啟動新實例,SELECT * FROM test.stolen_table **直接讀出所有數據**,繞過原實例所有權限。
  5. 若開啟匿名訪問,數據甚至可經網絡公開下載。

結論:數據文件**可讀即可盜**,權限必須收斂到**僅服務器運行用戶可讀寫**。

日志文件隱形洩露風險

  • 通用日志/更新日志:記錄完整 SQL 文本,包含 GRANT、SET PASSWORD、INSERT ... VALUES('secret')。
  • 口令雖在網絡傳輸中加密,**但日志落盤為明文**。grep -i password /var/lib/mysql/*.log 即可撈取。
  • 錯誤日志:可能包含敏感查詢片段。

**對策**:日志目錄同樣收斂權限;生產關閉通用日志;定期清理/加密歸檔。

最小權限加固 SOP(以 mysql:mysql 用戶組為例)

# 1. 定位數據目錄
DATADIR=/var/lib/mysql
cd $DATADIR

# 2. 統一所有權(需 root)
chown -R mysql:mysql .

# 3. 目錄權限:僅擁有者可進入
find . -type d -exec chmod 700 {} \;

# 4. 文件權限:僅擁有者可讀寫
find . -type f -exec chmod 600 {} \;

# 5. 驗證
ls -l
# 輸出應全為 drwx------ / -rw------- mysql mysql

補充:服務器啟動用戶鎖定

  • mysqld --user=mysql 強制以 mysql 用戶運行(即使 root 啟動也會 drop 權限)。
  • Systemd 服務文件 User=mysql Group=mysql。
  • **嚴禁以 root 運行 mysqld**,否則數據文件所有權變為 root,導致後續啟動失敗或權限混亂。

驗證清單

  1. 非 mysql 用戶 cat $DATADIR/db/tbl.frm → Permission denied。
  2. 非 mysql 用戶 mysql -u root -p 正常(網絡認證獨立)。
  3. 日志目錄同樣 700/600。
  4. 備份腳本以 mysql 用戶運行或通過 sudo -u mysql 提權。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved