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

MySQL 安全加固實戰指南:7 大核心防護策略

     編輯:MySQL 綜合教學

MySQL 安全加固實戰指南:7 大核心防護策略

MySQL 預設安裝往往存在安全隱患:密碼雖加密傳輸,但其他數據採用明文;匿名用戶、過度權限、不當的 root 使用等均可能導致資料洩露或服務被劫持。本文整理 7 項關鍵加固措施,助你構建強健的資料庫防線。

1. 強制所有用戶設定強密碼

空密碼是最大隱患。確保每個帳號(含 root)均設有複雜密碼。MySQL 5.7+ 預設已強制要求,舊版本需手動檢查:

SELECT User, Host FROM mysql.user WHERE authentication_string = '' OR authentication_string IS NULL;

2. 移除匿名用戶與測試資料庫

安裝腳本 mysql_secure_installation 可一鍵完成:刪除匿名帳號、禁止 root 遠程登入、移除 test 庫、重載權限表。

3. 以最小權限運行 MySQL 服務

嚴禁使用 root 系統用戶啟動 mysqld。 建立專用 mysql 用戶/組,僅授予數據目錄讀寫權限:

groupadd mysql && useradd -r -g mysql -s /sbin/nologin mysql
chown -R mysql:mysql /var/lib/mysql

4. 限制網絡暴露面

  • 生產環境綁定內網 IP:bind-address = 10.0.0.5
  • 若無遠程需求,啟用 skip-networking 僅允許 Unix Socket 連接
  • 使用防火牆限制 3306 埠僅對應用服務器開放

5. 加密傳輸通道

  • SSL/TLS:配置 ssl-ca、ssl-cert、ssl-key,強制加密連接(REQUIRE SSL)
  • SSH 隧道:運維連接時透過 SSH 轉發 3306 埠,避免直接暴露
  • 壓縮協議:客戶端啟用 --compress 減少明文傳輸量(MySQL 3.22+ 支持)

6. 最小化權限授予原則

危險權限風險建議
FILE讀寫服務器文件(如 /etc/passwd)僅 DBA 持有,應用帳號嚴禁
PROCESS查看所有執行中 SQL(含敏感密碼)僅監控帳號持有
SUPER殺死連接、修改全局變量、讀取日誌極少數管理帳號持有
SHUTDOWN關閉資料庫服務僅自動化運維帳號持有

應用帳號僅授予特定庫的 SELECT, INSERT, UPDATE, DELETE, EXECUTE。

7. 審計與監控

  • 啟用 general_log 記錄所有連接與查詢(高負載下慎用)
  • 部署 audit_plugin(如 MariaDB Audit Plugin、Percona Audit Plugin)記錄 DDL/DML 操作
  • 定期審查 mysql.user、db、tables_priv 權限表

總結

資料庫安全非一次性配置,而是持續過程:「最小權限、加密傳輸、專用用戶、審計日誌」四大支柱缺一不可。定期掃描弱密碼、異常權限、暴露端口,才能在攻擊面前保持主動。

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