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

MySQL 安全強化 23 條鐵律:從網路傳輸到權限最小化的全方位防護

     編輯:MySQL 資料庫相關知識

網路與傳輸層防護(第 1-3、8-9、14 條)

  1. 不可信網路必走 SSH 隧道:加密客戶端-伺服器通訊
  2. 密碼修改標準流程:mysql -u root → UPDATE mysql.user SET Password=PASSWORD('newpwd') → FLUSH PRIVILEGES
  3. 防禦四大攻擊面:竊聽、篡改、重放、拒絕服務 → ACL + SSL 雙層防護
  4. 防火牆隔離:資料庫置於 DMZ 或防火牆後,阻擋 50%+ 外部威脅
  5. 3306 端口嚴禁暴露:nmap/telnet 掃描驗證,防火牆/路由器屏蔽非信任來源
  6. 傳輸加密:tcpdump -i eth0 -w - src or dst port 3306 | strings 驗證明文洩露

認證與授權核心(第 4-7、10-13、15-18、20-22 條)

  1. root 之外禁訪 mysql.user 表:密碼雜湊洩露 = 權限淪陷
  2. GRANT/REVOKE 精細授權:拒絕通用帳號、拒絕過度授權
  3. 拒絕明文密碼:應用層用 SHA2()/bcrypt,資料庫層用 PASSWORD()(注意 8.0 已移除)
  4. 強密碼策略:禁用字典詞、長度 ≥12、混合大小寫數位符號
  5. Web 參數防注入:引號轉義、%22/%23/%27 編碼、嚴禁未檢查值直入 SQL
  6. 輸入長度校驗:防超長載荷攻擊
  7. 應用專用低權限帳號:僅授必要 DML,無 DDL/DCL
  8. 驅動層轉義函數:mysqli_real_escape_string/PDO::quote,禁用手工拼接
  9. 禁用符號連結:--skip-symbolic-links 防目錄遍歷
  10. 資料目錄權限收斂:僅啟動用戶可讀寫
  11. 嚴控 PROCESS/SUPER/FILE 權限:僅 DBA 持有,防洩露查詢文本、切斷連線、讀寫伺服器檔案
  12. 連線數限制:max_user_connections 防單用戶佔滿
  13. GRANT 資源限制:MAX_QUERIES_PER_HOUR 等配額控制
  14. 啟動參數收斂:--local-infile=0 禁用 LOAD DATA LOCAL,--skip-show-databases 隱藏庫列表

基礎設施與應急(第 19、23 條)

  1. 不信任 DNS → 僅授權 IP:繞過 DNS 劫持風險
  2. Error 1045 急救:mysqld --skip-grant-tables → UPDATE user SET Password=PASSWORD('new') WHERE User='root' → FLUSH PRIVILEGES → 重啟

現代補充(原文未覆蓋)

  • MySQL 8.0+:caching_sha2_password 預設認證插件、角色、密碼歷史、FIPS 模式
  • 審計插件:audit_log 記錄所有操作,滿足合規
  • 資料加密:TDE(表空間加密)、binlog_encryption、redo_log_encryption
  • 零信任網路:mTLS、Service Mesh、資料庫代理(ProxySQL)統一接入
安全非一次性配置,而是持續的流程:最小權限、加密傳輸、審計日誌、定期滲透測試、應急預案演練。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved