首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 數據庫安全加固 23 條軍規

     編輯:MySQL 綜合教學

MySQL 數據庫安全加固 23 條軍規

MySQL 官方文檔提煉的 23 項安全最佳實踐,涵蓋網絡傳輸、賬號權限、密碼策略、防火牆、SQL 注入防範、審計追蹤、資源限制等維度,構建纵深防御體系。

  1. 加密傳輸:跨不可信網絡連接必須使用 SSH 隧道或 SSL 加密通訊。
  2. 修改密碼正規流程:mysql -u root → UPDATE mysql.user SET Password=PASSWORD('newpwd') → FLUSH PRIVILEGES;
  3. 防範攻擊面:防竊聽、篡改、重放、DoS;基於 ACL (訪問控制列表) 控制所有連接/查詢/操作;支援 SSL。
  4. 嚴守 user 表:除 root 外禁止訪問 mysql.user 表;加密密碼一旦洩露等同賬號被盜。
  5. 權限管理用 GRANT/REVOKE:不用直操權限表。
  6. 禁用明文密碼:採用 MD5()、SHA1() 等單向哈希存儲。
  7. 拒絕弱密碼:不使用字典詞、生日等易猜測密碼。
  8. 防火牆隔離:資料庫置於防火牆後或 DMZ 區,阻擋 50% 外部威脅。
  9. 封鎖 3306 端口暴露:nmap/telnet 掃描驗證,非信任網絡禁止訪問 3306,在防火牆/路由器層面封鎖。
  10. 防 SQL 注入:Web 表單用單雙引號包裹字符串,動態 URL 編碼 %22 %23 %27;嚴禁未檢查值直入 SQL。
  11. 校驗輸入長度:傳入 MySQL 前檢查數據大小,防超長異常。
  12. 最小權限原則:應用使用普通賬號,僅授予必要權限(如僅 INSERT 無 DELETE)。
  13. 使用轉義函數:各語言驅動提供的 escape_string / PreparedStatement。
  14. 網絡傳輸加密:公網環境強制 SSL/SSH,禁用明文傳輸。
  15. 審計流量:tcpdump -l -i eth0 -w - src or dst port 3306 | strings 檢查明文洩露。
  16. 以普通用戶啟動 mysqld:禁止 root 啟動數據庫進程。
  17. 禁用符號鏈接:啟動參數 --skip-symbolic-links。
  18. 數據目錄權限收斂:僅啟動用戶可讀寫 MySQL 數據目錄。
  19. 嚴控 PROCESS/SUPER 權限:非管理員禁止授予;PROCESS 可見所有查詢文本,SUPER 可斷連接、改參數、控制復制。
  20. 禁用 FILE 權限:非管理員禁止,防 LOAD DATA '/etc/passwd' 讀取系統文件。
  21. 不信任 DNS 時用 IP 白名單:Host 列只填 IP 地址。
  22. 限制單用戶連接數:max_user_connections 變量控制。
  23. GRANT 支援資源限制:MAX_QUERIES_PER_HOUR 等配額選項。
  24. 安全啟動參數:--local-infile=0 禁用 LOAD DATA LOCAL;--skip-grant-tables 僅救急用,生產嚴禁;--skip-show-databases 隱藏庫列表。

附錄:Root 密碼重置急救單 (錯誤 1045)

1. mysqld_safe --skip-grant-tables &
2. mysql -u root mysql
3. UPDATE user SET Password=PASSWORD('newpwd') WHERE User='root';
4. FLUSH PRIVILEGES;
5. 重啟 mysqld 正常模式
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved