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

MySQL 伺服器內部安全:保護資料目錄免受本地用戶攻擊

     編輯:MySQL 資料庫相關知識

核心責任

MySQL 管理員必須保護資料庫內容安全,確保僅經嚴格認證的用戶能存取記錄。安全性包含兩個層面:

  • 內部安全性:檔案系統層面,防止擁有伺服器帳號的本地用戶直接存取/竄改資料目錄
  • 外部安全性:網路層面,防止未授權的網路連線存取資料庫

一、內部安全性風險與防護

需保護的核心資產

  1. 資料庫檔案:維護資料機密性與專有性
  2. 日誌檔案:通用/更新日誌含查詢文本,GRANT、SET PASSWORD 等敏感操作會以明文記錄密碼
  3. 狀態檔案:防止被惡意修改導致服務異常

資料目錄讀取風險實測

若表檔案可讀,攻擊者可竊取檔案並在受控 MySQL 實例中掛載讀取:

  1. 在同一主機啟動第二個 MySQL 實例(不同端口/資料目錄)
  2. 執行 mysql_install_db 初始化,獲得 root 權限
  3. 將目標表檔案複製至新實例 test 資料庫目錄
  4. 直接查詢竊取資料

防護措施

  • 資料目錄擁有者設為 mysql 用戶,權限 700(drwx------)
  • 日誌檔案同樣限制權限,避免洩露敏感 SQL
  • 關閉不必要的本地帳號,實施最小權限原則
  • 考慮使用 SELinux/AppArmor 強制存取控制

二、外部安全性基礎

MySQL 通過 mysql 資料庫中的授權表實現靈活權限系統:

  • 設定授權表拒絕無效帳號/密碼的連線
  • 僅允許必要的主機/IP 連線(避免 % 通配符)
  • 強制使用強密碼策略

三、關鍵檢查清單

  • ✅ datadir 擁有者為 mysql:mysql,權限 700
  • ✅ 日誌目錄權限 700,定期輪轉清理
  • ✅ 無匿名用戶(DELETE FROM mysql.user WHERE User='';)
  • ✅ root 僅允許 localhost 連線
  • ✅ 啟用 SSL 加密傳輸(生產環境強制)
  • ✅ 定期審核授權表,回收過期/多餘權限
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved