首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 安全強化指南:密碼傳輸加密、權限最小化、防駭客實戰建議

     編輯:MySQL 資料庫相關知識

連線層安全

  • 密碼不以明文傳輸 (採用挑戰-回應機制)。
  • 其他資訊 (SQL 語句、結果集) 為明文,敏感環境建議啟用壓縮協定 (MySQL 3.22+) 或部署 SSH 隧道 / SSL/TLS 加密全鏈路。

十大安全強化實務

  1. 所有帳號必須設密碼:空密碼帳號允許任意用戶冒用身份登入 (mysql -u other_user db)。
  2. 修改預設 root 密碼:安裝腳本 mysql_install_db 執行前修改,或安裝後立即執行:
    mysql -u root mysql
    UPDATE user SET Password=PASSWORD('StrongPass') WHERE User='root';
    FLUSH PRIVILEGES;
  3. 不要以 Unix root 身份運行 mysqld:建立專用 mysql 系統帳號,修改啟動腳本 su -s /bin/bash mysql -c "mysqld ..."。
  4. 保護啟動腳本權限:若腳本含 root 密碼,chmod 600 僅 root 可讀。
  5. 資料目錄權限最小化:唯有運行 mysqld 的 Unix 帳號擁有讀寫權限 (chown -R mysql:mysql /var/lib/mysql; chmod 700 /var/lib/mysql)。
  6. 嚴格控制 PROCESS 權限:SHOW PROCESSLIST 可見執行中 SQL (含敏感 UPDATE password 等);僅授予可信管理帳號;mysqld 保留一額外連線槽位供 root 緊急登入。
  7. 嚴格控制 FILE 權限:
    • 擁有者可在 mysqld 權限範圍內任意寫入檔案 (含覆寫系統檔案風險)。
    • SELECT ... INTO OUTFILE 產生的檔案全域可讀、不可覆寫既有檔案 (部份緩解)。
    • 可讀取 mysqld 進程可存取的任意檔案 (如 /etc/passwd → LOAD DATA → SELECT 洩露)。
  8. 授權表優先使用 IP 而非主機名:若不信任 DNS,避免主機名偽造;謹慎使用萬用字元主機名 (%.domain.com)。
  9. 移除匿名帳號:DELETE FROM mysql.user WHERE User=''; FLUSH PRIVILEGES;
  10. 限制 SHOW DATABASES 權限:--skip-show-database 啟動選項或僅授予必要帳號。

現代補充 (MySQL 5.7+ / 8.0)

  • 預設啟用 validate_password 元件強制密碼複雜度。
  • 支援 caching_sha2_password 更安全認證外掛。
  • 內建 ALTER USER ... REQUIRE SSL 強制加密連線。
  • 角色 (Role) 型權限管理簡化大規模授權。
  • 審計日誌 (Audit Log) 元件記錄所有操作。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved