MySQL 預設配置為了相容性犧牲了安全性,上線前必須進行系統級與網路級雙重加固。本文涵蓋資料目錄權限、帳號清理、網路綁定、防火牆、SQL 注入防禦與實用技巧。
啟動 MySQL 的 OS 使用者 (如 mysql) 應唯一擁有資料目錄讀寫權:
chown -R mysql:mysql /usr/local/mysql/var
chmod -R go-rwx /usr/local/mysql/var
驗證:ls -l /usr/local/mysql/var 應顯示 drwx------ (700),檔案 -rw------- (600)。
DELETE FROM mysql.user WHERE User='';test 資料庫:DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';UPDATE mysql.user SET Host='localhost' WHERE User='root'; FLUSH PRIVILEGES;GRANT SELECT,INSERT,UPDATE ON db.* TO 'app'@'10.0.0.%' IDENTIFIED BY 'strong_pwd';bind-address = 127.0.0.1 (僅本機存取)。iptables -A INPUT -p tcp -s 10.0.1.0/24 --dport 3306 -j ACCEPT。require_secure_transport=ON,配置 ssl-ca/ssl-cert/ssl-key。mysql.general_log 或 audit_log 異常存取。skip_name_resolve:跳過 DNS 反查,加速連線建立。max_connect_errors=100000:避免誤觸發 Host blocked。