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

MySQL 安全性指南:內部檔案系統防護與外部網路授權雙重防線建立

     編輯:MySQL 資料庫相關知識

前言

MySQL 管理員需負責資料安全性與完整性。安全分為兩層:**內部安全**(檔案系統層級,防本機帳號攻擊)與 **外部安全**(網路層級,防未授權客戶端連線)。本文詳細說明雙重防線建立方法。

一、內部安全:保護資料目錄

若本機其他使用者能直接讀寫資料目錄,網路授權再完美也無用。必須保護:

  • 資料庫檔案: 防止竊取/竄改表資料(.MYD, .MYI, .frm)。
  • 日誌檔案: 一般查詢日誌、更新日誌含敏感 SQL(GRANT, SET PASSWORD 明文密碼)。

駭客竊取資料表檔案的實戰手法

  1. 在攻擊者主機安裝「特製版」 MySQL(不同 Port/Socket/資料目錄)。
  2. 執行 mysql_install_db 初始化,擁有 root 權限。
  3. 將偷來的表檔複製到攻擊者的 test 資料庫目錄。
  4. 啟動攻擊者的 MySQL,即可 SELECT * 讀取所有資料。
  5. 甚至開放匿名存取,公開竊取資料。

檢測不安全權限

ls -l 資料目錄
# 尋找 "group" 和 "other" 有 r/w/x 權限的檔案/目錄

安全權限範例

drwx------  2 mysqladm mysqlgrp  512  Apr 16  manager
drwxr-x---  2 mysqladm mysqlgrp  512  Apr 16  test
# 目錄 750 (擁有者全權、群組讀執行、其他無)
# 檔案 640 (擁有者讀寫、群組讀取、其他無)

二、外部安全:授權表與網路存取控制

核心機制:mysql 系統資料庫中的授權表(user, db, host, tables_priv, columns_priv)。

關鍵設定原則

  • 所有帳號**必須設定強密碼**(PASSWORD() 加密存儲)。
  • 移除匿名帳號(User='')。
  • 限制 Host 欄位,避免 % (任意主機)。
  • 最小權限原則:僅授予必要資料庫、必要操作(SELECT/INSERT/UPDATE/DELETE)。
  • 管理權限(SHUTDOWN, RELOAD, PROCESS, FILE)極少數帳號擁有。

密碼加密機制

MySQL 使用雜湊加密存儲密碼,驗證時挑戰-回應機制,**密碼不在網路傳輸**。但 GRANT/SET PASSWORD 執行時明文寫入日誌,**日誌檔案必須嚴格保護**。

三、實務檢查清單

小結

「檔案系統鎖死資料目錄」+「授權表最小權限」+「日誌加密保護」+「網路層隔離」= 深度防禦體系。定期審核權限、輪換密碼、監控異常登入,安全才能長久。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
檢查項目標準
資料目錄權限750 (目錄) / 640 (檔案),擁有者 mysql:mysql
日誌檔案權限640,非 mysql 帳號不可讀
root 密碼已設定強密碼
匿名帳號已刪除
遠端 root 登入已禁止 (Host != %)
防火牆僅開放必要 IP 存取 3306
SSL 連線生產環境強制啟用