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

MySQL 資安防禦體系:從連線加密到權限最小化的 15 項核心原則

     編輯:MySQL 資料庫相關知識

連線與傳輸安全

  1. 全帳號強制密碼:移除匿名帳號,DELETE FROM mysql.user WHERE User='';
  2. 啟用 SSL/TLS:生成憑證,my.cnf 設定 ssl-ca/ssl-cert/ssl-key,要求 REQUIRE SSL
  3. 不可信網路走 SSH 隧道:ssh -L 3307:localhost:3306 user@db-host
  4. 壓縮協議輔助:--compress 增加竊聽成本

帳號權限鐵律

  1. 禁止 root 遠端:UPDATE mysql.user SET Host='localhost' WHERE User='root';
  2. 應用專用帳號:僅授予特定庫 SELECT/INSERT/UPDATE/DELETE
  3. 移除測試庫:DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test%'
  4. 嚴控 SUPER/PROCESS/FILE:僅 DBA 持有,防止查詢竊取、任意檔案讀寫
  5. 禁用符號連結:--skip-symbolic-links
  6. 資料目錄權限收斂:僅 mysql 系統用戶可讀寫 datadir
  7. IP 白名單授權:避免主機名通配符,CREATE USER 'app'@'10.0.1.%'
  8. 限制單帳號連線數:max_user_connections 或 GRANT ... WITH MAX_CONNECTIONS_PER_HOUR

應用層防禦

  1. 參數化查詢:預處理語句杜絕 SQL 注入
  2. 輸入驗證與長度限制:拒絕過長、異常字元
  3. 錯誤訊息不外洩:生產環境關閉詳細錯誤回顯

稽核與監控

  • 啟用 audit_log 記錄登入、DDL、DML 關鍵操作
  • 定期 pt-query-digest 分析慢查詢與異常模式
  • 監控 Aborted_connects、Access_denied_errors 告警

緊急修復:Root 密碼重置

systemctl stop mysqld
mysqld_safe --skip-grant-tables &
mysql -u root
UPDATE mysql.user SET authentication_string=PASSWORD('NewStrongPwd') WHERE User='root';
FLUSH PRIVILEGES;
systemctl restart mysqld
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved