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

MySQL 安全加固全維度指南:權限、網絡、審計、備份與合規

     編輯:MySQL 綜合教學

MySQL 安全加固全維度指南:權限、網絡、審計、備份與合規

數據庫安全是纵深防御體系的核心一環。本文從賬號權限、網絡訪問、密碼策略、審計日志、主機加固、SQL 注入防護、啟動參數、備份恢復八個維度,構建 MySQL 生產環境安全基線。

一、賬號權限最小化模型

權限表層級與生效順序


mysql.user      -- 全局權限 (最高層)
mysql.db        -- 庫級權限
mysql.tables_priv  -- 表級權限
mysql.columns_priv -- 列級權限 (最細粒度)

驗證邏輯:連接校驗 → user 全局權限 → db 庫權限 → tables_priv → columns_priv。就近原則:低層級 Y 覆蓋高層級 N。

基線配置清單

權限層級業務賬號建議管理賬號建議
SELECT/INSERT/UPDATE/DELETE表✅ 授予✅ 授予
CREATE/ALTER/INDEX/DROP庫/表✅ 授予 (DDL 變更走發布系統)✅ 授予
GRANT OPTION全局❌ 禁止✅ 僅 DBA
FILE全局❌ 禁止 (防止 LOAD DATA 讀取敏感文件)❌ 禁止
SHUTDOWN/PROCESS/SUPER/RELOAD全局❌ 禁止✅ 僅 DBA
REPLICATION SLAVE/CLIENT全局❌ 禁止✅ 僅同步賬號
CREATE USER全局❌ 禁止✅ 僅 DBA

「一庫一賬號一應用」原則

  • 每個業務系統獨立數據庫 + 專用賬號,db 表限定 Host、Db、User 三元組。
  • 移除默認匿名賬號、test 庫通配符權限。
  • 常用管理命令:
    
    GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER,INDEX ON db.* TO 'app'@'10.0.%.%' IDENTIFIED BY 'strong_pass';
    FLUSH PRIVILEGES;
    SHOW GRANTS FOR 'app'@'10.0.%.%';
    REVOKE DROP ON db.* FROM 'app'@'10.0.%.%';
    DROP USER 'old'@'%';
    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_strong_pass');
      

二、網絡訪問控制

  1. 端口綁定:bind-address=10.0.0.10 (內網 IP),禁用 0.0.0.0。
  2. 防火牆白名單 (iptables/nftables/安全組) 僅放行應用服務器 IP 段訪問 3306/自定義端口。
  3. 修改默認端口:port=33061 降低自動掃描命中率。
  4. 限制單用戶連接數:max_user_connections=100 或 GRANT ... WITH MAX_CONNECTIONS_PER_HOUR 1000。
  5. 跳板機/堡壘機:DBA 運維強制通過堡壘機,賬號 Host 限定為堡壘機 IP。
  6. 禁用 TCP/IP (極高安全場景):skip-networking 僅允許 Unix Socket 本地連接。

三、密碼策略與認證加固

  • 密碼複雜度:MySQL 5.7+ validate_password 插件強制長度、大小寫、數字、特殊字符。
  • 密碼輪換:password_expired、password_history、password_reuse_interval。
  • 認證插件升級:caching_sha2_password (8.0 默認) 替換 mysql_native_password。
  • 禁止舊密碼格式:啟動參數 --secure-auth 拒絕 pre-4.1 客戶端。
  • 應用層密碼存儲:禁止明文/弱哈希存儲,強制 bcrypt/Argon2 + Salt;定期撞庫檢測。

四、審計日志體系

日志類型配置參數用途
錯誤日志log-error啟動異常、崩潰堆棧、權限錯誤
通用查詢日志general_log=1, general_log_file全量 SQL 審計 (性能影響大,建議關鍵庫開啟)
慢查詢日志slow_query_log=1, long_query_time=1性能分析、索引優化
二進制日志log-bin, binlog_format=ROW主從同步、時間點恢復 (PITR)、審計 DML
審計插件audit_log (Enterprise) / MariaDB Audit Plugin合規級審計:誰、何時、何操作、影響行數

日志分析自動化:接入 ELK/ClickHouse,規則引擎檢測 UNION SELECT、SLEEP(、INTO OUTFILE 等注入特征;脫庫事後溯源。

五、作業系統級加固

  1. 專用運行用戶:Linux 建立 mysql 用戶/組,chown -R mysql:mysql /data/mysql;Windows 使用專用服務賬號 (非 Local System)。
  2. 目錄 ACL 最小權限:
    • 程序目錄:rx (讀/執行)
    • 數據目錄:rwx (讀/寫/執行)
    • 其他目錄:無權限
  3. 禁用 Shell 訪問:usermod -s /sbin/nologin mysql;移除 cmd.exe/bash 執行權限,防 UDF 提權、計劃任務植入。
  4. Chroot 隔離 (高階):將 MySQL 運行環境限制在獨立目錄樹。
  5. 清理歷史文件:定期 cat /dev/null > ~/.mysql_history、~/.bash_history,防敏感信息洩漏。
  6. Socket 文件保護:chmod 660 /var/lib/mysql/mysql.sock,防 Webshell 通過 Socket 免密登錄。

六、SQL 注入縱深防護

  • 應用層:參數化查詢 (PreparedStatement)、ORM 安全 API、輸入驗證、WAF。
  • 數據庫層:部署數據庫防火牆 — 安華金和、Snort 正則檢測、Druid SQL Wall (Java)、開源 libinjection。
  • 權限層:業務賬號 禁止 DROP、TRUNCATE、LOAD DATA、INTO OUTFILE。

七、關鍵啟動安全參數


--local-infile=0          -- 禁用 LOAD DATA LOCAL (防文件讀取注入)
--skip-grant-tables       -- 僅緊急恢復密碼時臨時使用,極度危險
--skip-name-resolve       -- 禁用 DNS 解析,Host 欄只存 IP,減少解析延遲與欺騙
--skip-networking         -- 禁用 TCP/IP (極高安全)
--skip-show-database      -- 僅 SHOW DATABASES 權限用戶可見庫列表
--secure-auth             -- 拒絕舊密碼格式客戶端
--safe-user-create        -- GRANT 創建用戶需 mysql.user INSERT 權限
--old-passwords           -- 兼容舊客戶端 (不推薦,應升級客戶端)

八、備份與災難恢復策略

策略工具/命令RPO/RTO適用場景
邏輯全量備份mysqldump --single-transaction --master-data=2 --routines --triggers | gzipRPO=備份間隔中小庫、跨版本遷移、開發環境
物理熱備份Percona XtraBackup / MySQL Enterprise BackupRPO=分鐘級大庫、生產環境、不阻塞寫入
增量備份XtraBackup --incremental / Binlog 解析RPO=秒級核心業務、金融級
異地容災rsync/云存儲同步備份文件;GTID 多源複製/Group ReplicationRPO=同步延遲多可用區/多Region

恢復演練:每季度 至少一次全量恢復演練,驗證備份文件完整性、恢復腳本可用性、RTO 達標。

九、合規檢查清單 (參考等保三級/PCI-DSS/GDPR)

  • [ ] Root 賬號重命名、強密碼、限定 Host
  • [ ] 匿名用戶、test 庫、無用賬號全部清理
  • [ ] 所有業務賬號遵循最小權限、專庫專用
  • [ ] 審計日志覆蓋 DDL/DML/DCL、保留 ≥ 6 個月
  • [ ] 敏感字段 (身份證、手機、銀行卡) 加密存儲/脫敏展示
  • [ ] SSL/TLS 傳輸加密 (require_secure_transport=ON)
  • [ ] 備份文件加密存儲、異地多副本
  • [ ] 變更管理流程:Schema 變更審批、回滾預案、灰度發布

安全無終點,唯有持續基線檢查、漏洞修補、紅藍對抗演練,才能構建可信的數據防線。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved