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

MySQL 安全加固圖文教程:最小權限、專用帳號、網路隔離

     編輯:MySQL 資料庫相關知識

一、專用運行帳號與目錄權限

  1. 建立系統帳號 mysql_svc,歸屬 Guests 群組(最低權限)。
  2. 設定 D:\mysql 目錄 ACL:
    Administrators:F、SYSTEM:F、mysql_svc:F,移除 Users、Everyone。
  3. MySQL 服務登入身分改為 mysql_svc,重啟服務生效。
  4. 本地安全策略 → 拒絕 mysql_svc 本地登入。

二、my.ini 關鍵安全參數

[mysqld]
port=3306
basedir="D:/mysql/"
datadir="D:/mysql/Data/"
tmpdir="d:/mysql/tmp/"
default-character-set=utf8mb4
default-storage-engine=InnoDB

skip-name-resolve      # 禁止 DNS 反解,防止連線延遲與欺騙
skip-symbolic-links    # 禁止符號連結攻擊
local-infile=0         # 禁用 LOAD DATA LOCAL INFILE
secure-file-priv=/tmp  # 限制 SELECT ... INTO OUTFILE 目錄

# 連線與資源限制
max_connections=500
max_connect_errors=3000
wait_timeout=120
interactive_timeout=120

# 緩衝區(視記憶體調整)
key_buffer_size=16M
innodb_buffer_pool_size=1G
thread_cache_size=8
table_open_cache=128

三、帳號權限最小化

-- 刪除匿名帳號
DELETE FROM mysql.user WHERE User='';

-- 禁止 root 遠端登入
UPDATE mysql.user SET Host='127.0.0.1' WHERE User='root' AND Host='%';
FLUSH PRIVILEGES;

-- 應用專用帳號,僅授必要權限
CREATE USER 'app_user'@'10.0.0.%' IDENTIFIED BY 'StrongPass!23';
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app_user'@'10.0.0.%';
-- 不授 DROP、ALTER、FILE、SHUTDOWN、PROCESS、SUPER

四、網路層防護

  • 防火牆僅開放應用伺服器 IP 存取 3306。
  • 生產庫不綁定公網 IP(bind-address=10.0.0.x)。
  • 啟用 SSL 連線(require_secure_transport=ON)。

五、審計與監控

  • 啟用 log_error、slow_query_log、general_log(謹慎,高負載下影響效能)。
  • 部署 mysql-audit 或 MariaDB Audit Plugin 記錄 DML/DDL 操作。
  • 定期巡檢 mysql.user、information_schema.processlist。

六、圖文操作參考(原文截圖)

建立專用帳號

目錄 ACL 設定

服務登入身分修改

拒絕本地登入策略

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