前置知识: MySQL

防火墙插件

1 minIntermediate2026/6/14

MySQL企业防火墙插件:SQL白名单、学习模式、拦截模式与SQL注入防护

1. MySQL 企业防火墙

MySQL Enterprise Firewall 记录正常SQL模式,拦截异常SQL,防止SQL注入。

2. 安装与配置

-- 安装防火墙插件
INSTALL PLUGIN mysql_firewall SONAME 'mysql_firewall.so';
INSTALL PLUGIN mysql_firewall_users SONAME 'mysql_firewall.so';
INSTALL PLUGIN mysql_firewall_whitelist SONAME 'mysql_firewall.so';

-- 创建防火墙用户
CREATE USER 'fw_user'@'%';
CALL mysql.sp_set_firewall_mode('fw_user@%', 'RECORDING');

3. 三种模式

模式说明
RECORDING记录SQL模式,建立白名单
PROTECTING允许白名单SQL,拦截异常SQL
DETECTING允许所有SQL,记录异常SQL
-- 学习模式:记录正常SQL
CALL mysql.sp_set_firewall_mode('fw_user@%', 'RECORDING');
-- 执行正常业务SQL...

-- 切换到保护模式
CALL mysql.sp_set_firewall_mode('fw_user@%', 'PROTECTING');

-- 检测模式(不拦截,只记录)
CALL mysql.sp_set_firewall_mode('fw_user@%', 'DETECTING');

4. 查看防火墙状态

-- 查看用户防火墙模式
SELECT * FROM mysql.firewall_users;

-- 查看白名单规则
SELECT * FROM mysql.firewall_whitelist;

-- 查看拦截统计
SELECT * FROM performance_schema.firewall_status;