一、專用運行帳號與目錄權限
- 建立系統帳號
mysql_svc,歸屬 Guests 群組(最低權限)。
- 設定
D:\mysql 目錄 ACL:
Administrators:F、SYSTEM:F、mysql_svc:F,移除 Users、Everyone。
- MySQL 服務登入身分改為
mysql_svc,重啟服務生效。
- 本地安全策略 → 拒絕
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。
六、圖文操作參考(原文截圖)



