絕不以 root/Administrator 身分運行 mysqld。最小權限原則:資料庫進程僅擁有資料目錄讀寫、日誌寫入、tmpdir 讀寫、socket 建立權限。
groupadd -r mysql && useradd -r -g mysql -s /sbin/nologin -d /var/lib/mysql mysqlsystemctl stop mysqld
chown -R mysql:mysql /var/lib/mysqlchown -h 遞歸處理連結目標。[mysqld]
user = mysqlsystemctl edit mysqld
[Service]
User=mysql
Group=mysqlps -eo user,cmd | grep mysqld → 應顯示 mysql 而非 root。| 項目 | 建議 |
|---|---|
| root 帳號 | 強制設定強密碼,禁止遠端登入 (host=localhost) |
| 匿名帳號 | DROP USER ''@'%'; DROP USER ''@'localhost'; |
| 測試資料庫 | DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test%' |
| FILE 權限 | 僅 admin 帳號持有,防止 LOAD DATA INFILE 讀取系統檔案 |
| PROCESS/SUPER | 僅 DBA 帳號持有,防止查看他人查詢/修改全域變數 |
| 連線數限制 | GRANT ... WITH MAX_CONNECTIONS_PER_HOUR 100 |
非 root 運行是資料庫安全基線第一步。標準化部署:專用帳號 + 目錄擁有權遷移 + systemd User= 指定 + 權限最小化授權 + 審計基線掃描,構建纵深防禦體系。