數據庫安全是持續過程而非一次性配置。內部安全聚焦文件系統權限控制,確保只有MySQL進程擁有者能讀寫關鍵文件,防止本地提權與橫向移動。
chown -R mysql:mysql /usr/local/mysql
chown -R root:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data
原則:代碼目錄root擁有防篡改,數據目錄mysql擁有保障運行寫入。
| 路徑 | 八進制 | 符號模式 | 說明 |
|---|---|---|---|
| /usr/local/mysql | 755 | u=rwx,go=rx | 管理員全控,其他可讀執行進入子目錄 |
| /usr/local/mysql/bin | 755 | u=rwx,go=rx | 二進制文件需執行權限 |
| /usr/local/mysql/libexec | 700 | u=rwx,go-rwx | 核心執行文件mysqld,僅屬主可訪問 |
| /usr/local/mysql/data | 700 (遞歸) | go-rwx (遞歸) | 數據文件、日志、socket絕對機密 |
/tmp設置粘滯位(chmod +t /tmp),防止用戶刪除他人socket導致DoS~/.my.cnf必須600data目錄權限#!/bin/bash
# 檢查關鍵目錄權限
check_perm() {
stat -c "%a %n" "$1" | awk '{if ($1 != "'$2'") print "ALERT: " $0 " expected '$2'"}'
}
check_perm /usr/local/mysql 755
check_perm /usr/local/mysql/bin 755
check_perm /usr/local/mysql/libexec 700
find /usr/local/mysql/data -maxdepth 1 -exec stat -c "%a %n" {} \; | awk '$1 != 700 {print "DATA ALERT: " $0}'
配置完成後,只有mysql用戶能啟動服務。任何其他用戶嘗試啟動將因無法讀取libexec/mysqld、寫入data目錄、綁定socket而失敗,有效阻斷非授權實例運行。
icacls "C:\MySQL" /inheritance:r /grant:r "SYSTEM:(OI)(CI)F" "Administrators:(OI)(CI)F" "mysql:(OI)(CI)R"icacls "C:\MySQL\data" /grant:r "mysql:(OI)(CI)F" /remove "Users" "Authenticated Users"mysql服務賬號,非LocalSystem