MySQL 默認協議:密碼經挑戰-響應加密傳輸(不為明文),但所有其他數據(查詢、結果、錯誤信息)均為明文。本文提供從協議壓縮、SSL/TLS 加密、SSH 隧道、到系統級加固的分層防護建議。
mysql --compress,增加嗅探難度,但非加密,無法防竊聽。ssl-ca、ssl-cert、ssl-key,客戶端 --ssl-mode=REQUIRED,實現端到端加密。# 客戶端建立隧道
ssh -L 3307:localhost:3306 user@db_server
# 連接本地 3307 即經過加密通道訪問遠程 3306
mysql -h 127.0.0.1 -P 3307 -u dbuser -p
適用於跨公網訪問、無法部署 SSL 憑證的舊版本環境。
UPDATE mysql.user SET Password=PASSWORD('strong') WHERE User='root';
FLUSH PRIVILEGES;
空密碼帳號等同無認證,任何人可 mysql -u other_user db 登入。mysql 用戶,啟動腳本用 su - mysql -c mysqld_safe。root 運行導致 FILE 權限等同系統最高權限。mysql 用戶擁有 datadir 讀寫權限(chmod 700/chown mysql:mysql)。SHOW PROCESSLIST 會洩露正在執行的 SET PASSWORD 等敏感 SQL。僅保留 root 及監控帳號。SELECT ... INTO OUTFILE 可寫文件,LOAD DATA INFILE 可讀 /etc/passwd 等敏感文件。僅備份帳號保留,並設置 secure_file_priv 限制目錄。--skip-name-resolve 禁用 DNS 解析,提升連接性能與安全性。%、%.domain.com 極易誤匹配,原則上僅允許具體 IP/主機名。--secure-auth 拒絕預 4.1 協議客戶端(老版本密碼雜湊極弱)。mysql_secure_installation(官方腳本)自動化基線檢查。mysqldump | openssl enc -aes-256-cbc -out backup.sql.enc。安全是系統工程:傳輸加密保護數據在途,系統加固守住數據落地,審計監控發現異常,備份加密應對極端丟失。分層防禦,方能高枕無憂。