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

MySQL 安全加固 23 條軍規:從密碼策略到網絡隔離的完整清單

     編輯:MySQL 綜合教學

MySQL 安全加固 23 條核心準則 (官方文檔精華版)

MySQL 官方文檔列出的 23 項安全注意事項,涵蓋網絡傳輸、認證授權、文件權限、參數配置、應用層防注入等全維度,構建纵深防御體系。

網絡與傳輸安全

  1. 不可信網絡必走 SSH 隧道 / SSL:客戶端-服務端鏈接跨公網/非受信網段時,強制加密 (SSL/SSH),防竄改/側錄/重放。
  2. 禁用明文密碼傳輸:啟用 require_secure_transport=ON (5.7+),或配置 SSL 憑證。

認證與授權

  1. Root 密碼定期輪換:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd'); FLUSH PRIVILEGES;
  2. 最小權限原則:業務賬號僅授予必要庫/表/列權限,嚴禁 授予 PROCESS、SUPER、FILE、SHUTDOWN 等高危權限。
  3. 匿名用戶清理:DROP USER ''@'%'; DROP USER ''@'localhost';
  4. 密碼複雜度:安裝 validate_password 插件,強制長度、大小寫、數字、特殊字符。
  5. 密碼哈希存儲:MySQL 內部使用 SHA-256 (caching_sha2_password),應用層勿自行 MD5/SHA1 存儲。

網絡訪問控制

  1. 防火牆屏蔽 3306:僅允許應用服務器 IP 訪問,nmap/telnet 掃描驗證。
  2. 綁定地址:bind-address=127.0.0.1 (僅本地) 或具體內網 IP,絕不 0.0.0.0。
  3. Skip Name Resolve:skip-name-resolve 禁用 DNS 反解,減少延遲與欺騙風險,授權表僅用 IP。

應用層防注入

  1. 參數化查詢 / 預處理語句:嚴禁字符串拼接 SQL,使用 PreparedStatement / ORM 安全 API。
  2. 輸入驗證與長度限制:白名單校驗,拒絕超長輸入導致緩衝區溢出/DoS。
  3. 轉義函數:若必須拼接,各語言驅動提供 escape_string / mysql_real_escape_string。

文件系統與進程安全

  1. 專用低權限用戶運行 mysqld:user=mysql,數據目錄擁有者 mysql:mysql,權限 750。
  2. 禁用符號鏈接:skip-symbolic-links 防止任意文件讀取。
  3. 限制 LOCAL INFILE:local-infile=0 禁用客戶端本地文件導入 (防任意文件讀取)。
  4. 禁用 SHOW DATABASES:skip-show-database 隱藏庫列表信息。

監控與審計

  1. 連接數限制:max_user_connections 防單用戶佔用所有連接。
  2. 資源組/配額:GRANT ... WITH MAX_QUERIES_PER_HOUR ... 限制資源消耗。
  3. 審計日誌:企業版 audit_log 插件或社區版 MariaDB Audit Plugin 記錄所有操作。

緊急恢復:Root 密碼丟失重置

1. 停止服務
2. mysqld_safe --skip-grant-tables --skip-networking &
3. mysql -u root mysql
4. UPDATE user SET authentication_string=PASSWORD('newpwd') WHERE user='root';  -- 5.7+ authentication_string
5. FLUSH PRIVILEGES;
6. 正常重啟服務
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved