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

MySQL 安全配置指南(一):文件系統權限、網絡隔離與內部加固

     編輯:MySQL 綜合教學

安全配置兩大維度

MySQL 預設配置兼顧跨平台通用性,**生產環境必須從「系統內部」與「外部網絡」兩個維度進行加固**。

一、系統內部安全:文件系統權限是第一道防線

目錄結構與風險

  • 安裝目錄(如 /usr/local/mysql):程式碼、腳本、庫文件,屬 root:root,權限 755。
  • 資料目錄(/usr/local/mysql/var 或 /var/lib/mysql):核心資產,含 .frm、.MYD、.MYI 等文件。

風險:若本地用戶可讀資料目錄,攻擊者只需打包複製 var/ 到自身機器同路徑,即可繞過 MySQL 權限系統直接讀取數據。

歷史版本權限演進

版本資料目錄權限風險評估
3.21.x775極高:任意本地用戶可讀
3.22.x770高:同組用戶可讀寫
3.23.x+700低:僅啟動用戶(如 mysql)可讀寫

標準安全權限模板

# 假設 MySQL 以 mysql 用戶運行,安裝於 /usr/local/mysql
drwxrwxr-x  root root  /usr/local/mysql/bin
drwxrwxr-x  root root  /usr/local/mysql/lib
...
drwx------  mysql mysql /usr/local/mysql/var          # 700
drwx------  mysql mysql /usr/local/mysql/var/mysql    # 700
-rw-------  mysql mysql /usr/local/mysql/var/mysql/*.MYD  # 600
-rw-------  mysql mysql /usr/local/mysql/var/mysql/*.MYI  # 600
-rw-------  mysql mysql /usr/local/mysql/var/mysql/*.frm  # 600

修正命令

chown -R mysql:mysql /usr/local/mysql/var
chmod 700 /usr/local/mysql/var
find /usr/local/mysql/var -type f -exec chmod 600 {} \;

二、外部網絡安全:最小暴露面原則

  • 綁定本地回環:bind-address = 127.0.0.1(僅本機訪問),或指定內網管理 IP。
  • 防火牆限制:僅允許應用服務器 IP 訪問 3306 埠。
  • 禁用/重命名 root 遠程登入:RENAME USER 'root'@'%' TO 'admin'@'10.0.0.5';
  • 啟用 SSL:強制加密傳輸(詳見 SSL 專題)。
  • 關閉不必要功能:skip-show-database、local-infile=0、skip-symbolic-links。

三、編程層面防禦

  • 預處理語句:杜絕 SQL 注入(PreparedStatement / PDO::prepare)。
  • 最小權限連線帳號:應用僅用具備特定庫表增刪改查權限的帳號,嚴禁 root。
  • 錯誤資訊不外洩:生產環境關閉詳細錯誤輸出,記錄至日誌供開發排查。

四、小竅門

  • mysql_secure_installation:官方互動式腳本,一鍵完成匿名用戶清理、root 密碼設定、移除 test 庫、禁止 root 遠程登入。
  • 定期執行 SELECT User, Host, authentication_string FROM mysql.user; 審計帳號。
  • 監控 Aborted_connects、Access_denied_errors 狀態變量,異常告警。

總結

「文件系統 700/600、網絡最小暴露、帳號最小權限、編程參數化查詢」構成 MySQL 內部安全的四大支柱。下篇將深入 SSL/TLS、審計插件、資料加密等進階主題。

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