MySQL 預設配置兼顧跨平台通用性,**生產環境必須從「系統內部」與「外部網絡」兩個維度進行加固**。
/usr/local/mysql):程式碼、腳本、庫文件,屬 root:root,權限 755。/usr/local/mysql/var 或 /var/lib/mysql):核心資產,含 .frm、.MYD、.MYI 等文件。風險:若本地用戶可讀資料目錄,攻擊者只需打包複製 var/ 到自身機器同路徑,即可繞過 MySQL 權限系統直接讀取數據。
| 版本 | 資料目錄權限 | 風險評估 |
|---|---|---|
| 3.21.x | 775 | 極高:任意本地用戶可讀 |
| 3.22.x | 770 | 高:同組用戶可讀寫 |
| 3.23.x+ | 700 | 低:僅啟動用戶(如 mysql)可讀寫 |
# 假設 MySQL 以 mysql 用戶運行,安裝於 /usr/local/mysql
drwxrwxr-x root root /usr/local/mysql/bin
drwxrwxr-x root root /usr/local/mysql/lib
...
drwx------ mysql mysql /usr/local/mysql/var # 700
drwx------ mysql mysql /usr/local/mysql/var/mysql # 700
-rw------- mysql mysql /usr/local/mysql/var/mysql/*.MYD # 600
-rw------- mysql mysql /usr/local/mysql/var/mysql/*.MYI # 600
-rw------- mysql mysql /usr/local/mysql/var/mysql/*.frm # 600
chown -R mysql:mysql /usr/local/mysql/var
chmod 700 /usr/local/mysql/var
find /usr/local/mysql/var -type f -exec chmod 600 {} \;
bind-address = 127.0.0.1(僅本機訪問),或指定內網管理 IP。RENAME USER 'root'@'%' TO 'admin'@'10.0.0.5';skip-show-database、local-infile=0、skip-symbolic-links。PreparedStatement / PDO::prepare)。mysql_secure_installation:官方互動式腳本,一鍵完成匿名用戶清理、root 密碼設定、移除 test 庫、禁止 root 遠程登入。SELECT User, Host, authentication_string FROM mysql.user; 審計帳號。Aborted_connects、Access_denied_errors 狀態變量,異常告警。「文件系統 700/600、網絡最小暴露、帳號最小權限、編程參數化查詢」構成 MySQL 內部安全的四大支柱。下篇將深入 SSL/TLS、審計插件、資料加密等進階主題。