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

MySQL 安全加固 23 條軍規

     編輯:MySQL 資料庫相關知識
  1. 加密傳輸:跨不可信網絡連接必須使用 SSH 隧道或 SSL。
  2. 修改密碼規範:SET PASSWORD 或 UPDATE mysql.user SET Password=PASSWORD('new') 後執行 FLUSH PRIVILEGES。
  3. 防範攻擊面:防竊聽、篡改、重放、DoS;基於 ACL(訪問控制列表)管控所有連接與操作,支援 SSL。
  4. 保護 user 表:除 root 外禁止訪問 mysql.user;加密密碼一旦洩露即意味著對應賬號失陷。
  5. 權限管理:使用 GRANT/REVOKE 進行精細授權。
  6. 不存明文密碼:應用層用 MD5()/SHA1() 等單向雜湊存儲。
  7. 拒絕弱密碼:禁止字典單詞、生日等可猜測密碼。
  8. 防火牆隔離:資料庫置於防火牆後或 DMZ 區,阻擋 50% 外部威脅。
  9. 端口掃描驗證:用 nmap 或 telnet host 3306 確認 3306 不對不可信網開放;防火牆/路由器封鎖。
  10. 防 SQL 注入:Web 表單用引號包裹字串,動態 URL 轉義 %22/%23/%27;嚴禁未檢查值直入 SQL。
  11. 長度檢查:傳入 MySQL 前校驗數據長度,防超長截斷或溢出。
  12. 最小權限原則:應用連接用普通帳號,僅授必要權限。
  13. 使用轉義函數:各語言驅動提供的 mysql_real_escape_string、PDO::quote 等。
  14. 加密傳輸(重申):公網環境強制 SSL/SSH,禁止明文傳輸。
  15. 流量審計:tcpdump -l -i eth0 -w - src or dst port 3306 | strings 檢查明文洩露;以普通用戶啟動 mysqld。
  16. 禁用符號連接:啟動參數 --skip-symbolic-links。
  17. 目錄權限鎖定:MySQL 數據目錄僅允許啟動用戶讀寫。
  18. 嚴控高危權限:PROCESS/SUPER 僅授管理員;前者可看全庫查詢,後者可殺連接、改參數、控制復制。
  19. 禁止 FILE 權限:防 LOAD DATA INFILE '/etc/passwd' 讀取敏感檔案。
  20. 信任 IP 而非主機名:若不信任 DNS,授權表僅填 IP。
  21. 限制單用戶連接數:設定 max_user_connections 防單賬號佔盡資源。
  22. GRANT 資源控制:GRANT ... WITH MAX_QUERIES_PER_HOUR ... 等限額。
  23. 啟動安全開關:--local-infile=0 禁用 LOAD DATA LOCAL;--skip-grant-tables 僅救急用,生產嚴禁;--skip-show-databases 隱藏庫列表。
  24. Root 密碼重置應急:mysqld --skip-grant-tables → UPDATE user SET Password=PASSWORD('new') WHERE User='root' → FLUSH PRIVILEGES → 正常重啟。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved