資料庫是企業核心資產,MySQL 官方文件列出 23 項安全實務,涵蓋網路傳輸、帳號權限、作業系統層面與應用程式防禦。本文將其重新組織為六大面向,並補充現代最佳實務。
REQUIRE SSL)。nmap -p 3306 或 telnet host 3306 確認對外封鎖。SHA2 / caching_sha2_password 插件。validate_password 元件設定長度、字元類型、過期週期。SET PASSWORD / ALTER USER,配合 FLUSH PRIVILEGES。SELECT/INSERT/UPDATE/DELETE,嚴禁 GRANT OPTION、FILE、PROCESS、SUPER。DROP USER ''@'%'; DROP DATABASE test;。mysqli_real_escape_string、Java PreparedStatement、Python %s 佔位符等。--skip-symbolic-links 禁用符號連結攻擊。mysql 使用者,權限 750 / 640。FILE 權限僅授予管理帳號,防 LOAD DATA INFILE '/etc/passwd' 攻擊。host 欄位僅填 IP。--local-infile=0 關閉客戶端本地載入。--skip-show-database 隱藏資料庫列表。max_user_connections 限制單帳號連線數,防連線耗盡。general_log / audit_log 記錄關鍵操作。tcpdump -i eth0 port 3306 | strings 檢查明文傳輸洩漏。systemctl stop mysqld
mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root mysql
UPDATE user SET authentication_string=PASSWORD('新密碼') WHERE user='root';
FLUSH PRIVILEGES;
systemctl restart mysqld
安全是持續過程而非一次性設定,建議將上述清單納入 CI/CD 檢核與定期滲透測試範圍。