下面的章节提供了MySQL企业防火墙元素的参考:
MySQL企业防火墙维护每个组和每个帐户的配置文件信息。中使用的表mysql
系统数据库用于持久存储和INFORMATION_SCHEMA
或Performance Schema表,以提供内存中缓存数据的视图。启用后,防火墙将基于缓存数据做出操作决策。
防火墙组配置表
从MySQL 8.0.23开始,MySQL企业防火墙使用表维护组配置文件信息mysql
用于持久存储的系统数据库和提供内存中缓存数据视图的Performance Schema表。
属性的帐户才能访问每个系统和性能模式表选择
它的特权。
的mysql.firewall_groups
表中列出已注册防火墙组配置文件的名称和操作方式。该表包含以下列(具有相应的Performance Schema)firewall_groups
列相似但不一定相同的表):
的名字
组配置文件名称。
模式
概要文件的当前操作模式。允许的模式值为
从
,检测
,保护
,记录
.关于它们的含义,请参见防火墙的概念.USERHOST
组配置文件的培训帐户,当配置文件在中时使用
记录
模式。取值为零
,或非零
具有该格式的帐户
:user_name
@host_name
如果值为
零
,防火墙会记录allowlist规则,用于接收来自组成员的任何帐户的语句。如果为“non-”
零
,防火墙只对从指定帐户(应该是组的成员)接收的语句记录allowlist规则。
的mysql.firewall_group_allowlist
表中列出已注册防火墙组配置文件的allowlist规则。该表包含以下列(具有相应的Performance Schema)firewall_group_allowlist
列相似但不一定相同的表):
的名字
组配置文件名称。
规则
指示概要文件可接受的语句模式的规范化语句。配置文件allowlist是其规则的并集。
ID
作为表主键的整数列。
的mysql.firewall_membership
表中列出已注册防火墙组配置文件的成员(帐户)。该表包含以下列(具有相应的Performance Schema)firewall_membership
列相似但不一定相同的表):
GROUP_ID
组配置文件名称。
MEMBER_ID
作为配置文件成员的帐户的名称。
防火墙帐户配置表
数据库中的表维护帐户配置文件信息mysql
系统数据库用于持久存储和INFORMATION_SCHEMA
表,为内存中缓存的数据提供视图。
每一个mysql
的帐户才能访问系统数据库表选择
它的特权。的INFORMATION_SCHEMA
任何人都可以访问表格。
从MySQL 8.0.26开始,这些表已弃用,并将在未来的MySQL版本中被移除。看到将帐户概要文件迁移到组概要文件.
的mysql.firewall_users
表中列出已注册防火墙帐户配置文件的名称和操作方式。该表有以下列(具有相应的INFORMATION_SCHEMA。MYSQL_FIREWALL_USERS
列相似但不一定相同的表):
USERHOST
帐户配置文件名称。每个帐户名都有该格式
.user_name
@host_name
模式
概要文件的当前操作模式。允许的模式值为
从
,检测
,保护
,记录
,重置
.关于它们的含义,请参见防火墙的概念.
的mysql.firewall_whitelist
表中列出了已注册防火墙帐户配置文件的allowlist规则。该表有以下列(具有相应的INFORMATION_SCHEMA。MYSQL_FIREWALL_WHITELIST
列相似但不一定相同的表):
USERHOST
帐户配置文件名称。每个帐户名都有该格式
.user_name
@host_name
规则
指示概要文件可接受的语句模式的规范化语句。配置文件allowlist是其规则的并集。
ID
作为表主键的整数列。该列是在MySQL 8.0.12中添加的。
MySQL Enterprise Firewall存储过程执行的任务包括向防火墙注册概要文件、建立它们的操作模式以及管理在缓存和持久存储之间的防火墙数据传输。这些过程调用为低级任务提供API的管理函数。
防火墙存储过程创建于mysql
系统数据库。若要调用防火墙存储过程,可以在while中调用mysql
为默认数据库,或使用数据库名称限定过程名。例如:
调用mysql.sp_set_firewall_group_mode (集团,模式);
防火墙组配置文件存储过程
这些存储过程对防火墙组配置文件进行管理操作:
sp_firewall_group_delist (
集团
,用户
)此存储过程将从防火墙组配置文件中删除帐户。
如果调用成功,则对内存中的缓存和持久存储进行组成员关系的更改。
参数:
集团
:受影响的组配置文件名称。用户
:要删除的帐户,作为字符串
格式。user_name
@host_name
例子:
调用sp_firewall_group_delist('g', 'fwuser@localhost');
此过程是在MySQL 8.0.23中添加的。
sp_firewall_group_enlist (
集团
,用户
)此存储过程将帐户添加到防火墙组配置文件中。在将帐户添加到组之前,不需要将帐户本身注册到防火墙。
如果调用成功,则对内存中的缓存和持久存储进行组成员关系的更改。
参数:
集团
:受影响的组配置文件名称。用户
:要添加的帐户,作为字符串
格式。user_name
@host_name
例子:
调用sp_firewall_group_enlist('g', 'fwuser@localhost');
此过程是在MySQL 8.0.23中添加的。
sp_reload_firewall_group_rules (
集团
)此存储过程提供对各个组概要文件的防火墙操作的控制。过程使用防火墙管理功能从存储在中的规则重新加载组概要文件的内存规则
mysql.firewall_group_allowlist
表格参数:
集团
:受影响的组配置文件名称。
例子:
调用sp_reload_firewall_group_rules(“myapp”);
警告此过程在从持久存储中重新加载组概要文件之前清除它们在内存中的allowlist规则,并将概要文件模式设置为
从
.如果配置文件模式不是从
在此之前sp_reload_firewall_group_rules ()
调用,使用sp_set_firewall_group_mode ()
在重新加载规则后恢复其以前的模式。例如,如果配置文件在保护
模式,在调用后不再成立sp_reload_firewall_group_rules ()
你必须把它设置成保护
再次明确。此过程是在MySQL 8.0.23中添加的。
sp_set_firewall_group_mode (
集团
,模式
)这个存储过程在将防火墙组概要文件注册到防火墙(如果它还没有注册)之后,为防火墙组概要文件建立操作模式。该过程还在必要时调用防火墙管理函数,以便在缓存和持久存储之间传输防火墙数据。此过程可以被调用,即使
mysql_firewall_mode
系统变量为从
,尽管为概要文件设置模式在启用防火墙之前没有操作效果。如果概要文件以前存在,那么它的任何记录限制都保持不变。若要设置或清除限制,请调用
sp_set_firewall_group_mode_and_user ()
代替。参数:
集团
:受影响的组配置文件名称。模式
:配置文件的操作模式,作为字符串。允许的模式值为从
,检测
,保护
,记录
.关于它们的含义,请参见防火墙的概念.
例子:
调用sp_set_firewall_group_mode('myapp', ' protective ');
此过程是在MySQL 8.0.23中添加的。
sp_set_firewall_group_mode_and_user (
集团
,模式
,用户
)此存储过程向防火墙注册一个组并建立其操作模式,类似于
sp_set_firewall_group_mode ()
,但还指定了组进入时使用的培训帐户记录
模式。参数:
集团
:受影响的组配置文件名称。模式
:配置文件的操作模式,作为字符串。允许的模式值为从
,检测
,保护
,记录
.关于它们的含义,请参见防火墙的概念.用户
:组配置文件的培训账号,在导入时使用记录
模式。取值为零
,或非零
具有该格式的帐户
:user_name
@host_name
如果值为
零
,防火墙会记录allowlist规则,用于接收来自组成员的任何帐户的语句。如果为“non-”
零
,防火墙只对从指定帐户(应该是组的成员)接收的语句记录allowlist规则。
例子:
调用sp_set_firewall_group_mode_and_user('myapp', 'RECORDING', 'myapp_user1@localhost');
此过程是在MySQL 8.0.23中添加的。
防火墙帐户配置文件存储过程
这些存储过程对防火墙帐户配置文件进行管理操作:
sp_reload_firewall_rules (
用户
)此存储过程提供对各个帐户概要的防火墙操作的控制。过程使用防火墙管理功能从存储在中的规则重新加载帐户概要文件的内存规则
mysql.firewall_whitelist
表格参数:
用户
:受影响帐户配置文件的名称,在
格式。user_name
@host_name
例子:
调用mysql.sp_reload_firewall_rules(“fwuser@localhost”);
警告此过程在从持久存储重新加载帐户概要文件之前清除内存中的帐户概要文件allowlist规则,并将概要文件模式设置为
从
.如果配置文件模式不是从
在此之前sp_reload_firewall_rules ()
调用,使用sp_set_firewall_mode ()
在重新加载规则后恢复其以前的模式。例如,如果配置文件在保护
模式,在调用后不再成立sp_reload_firewall_rules ()
你必须把它设置成保护
再次明确。从MySQL 8.0.26开始,这个过程已弃用,并将在未来的MySQL版本中被移除。看到将帐户概要文件迁移到组概要文件.
sp_set_firewall_mode (
用户
,模式
)该存储过程在向防火墙注册概要文件(如果概要文件尚未注册)之后,为防火墙帐户概要文件建立操作模式。该过程还在必要时调用防火墙管理函数,以便在缓存和持久存储之间传输防火墙数据。此过程可以被调用,即使
mysql_firewall_mode
系统变量为从
,尽管为概要文件设置模式在启用防火墙之前没有操作效果。参数:
用户
:受影响帐户配置文件的名称,在
格式。user_name
@host_name
模式
:配置文件的操作模式,作为字符串。允许的模式值为从
,检测
,保护
,记录
,重置
.关于它们的含义,请参见防火墙的概念.
切换帐户配置文件到任何模式,但
记录
将其防火墙缓存数据同步到mysql
提供持久底层存储的系统数据库表。切换模式从
来记录
控件中重新加载allow列表mysql.firewall_whitelist
表放入缓存。如果帐户配置文件的allowlist为空,则其模式不能设置为
保护
因为概要文件将拒绝每个语句,有效地禁止帐户执行语句。在响应这样的模式设置尝试时,防火墙会产生一个诊断消息,作为结果集而不是SQL错误返回:mysql>调用mysql.sp_set_firewall_mode('a@b','保护');+----------------------------------------------------------------------+ | set_firewall_mode (arg_userhost arg_mode ) | +----------------------------------------------------------------------+ | 错误:保护模式要求a@b但allowlist是空的。| +----------------------------------------------------------------------+
从MySQL 8.0.26开始,这个过程已弃用,并将在未来的MySQL版本中被移除。看到将帐户概要文件迁移到组概要文件.
防火墙其他存储过程
这些存储过程执行各种防火墙管理操作。
sp_migrate_firewall_user_to_group (
用户
,集团
)从MySQL 8.0.26开始,帐户概要文件已弃用,因为组概要文件可以做任何帐户概要文件可以做的事情。的
sp_migrate_firewall_user_to_group ()
存储过程将防火墙帐户配置文件转换为组配置文件,其中该帐户是其单个征募成员。中讨论了转换过程将帐户概要文件迁移到组概要文件.此例程需要
FIREWALL_ADMIN
特权。参数:
用户
:要转换为组配置文件的帐户配置文件的名称,在
格式。帐户概要文件必须存在,并且当前不能在user_name
@host_name
记录
模式。集团
:新创建的组配置文件的名称,该名称不能已经存在。新的组配置文件将命名帐户作为其单个招募成员,该成员被设置为组培训帐户。组概要文件操作模式取自帐户概要文件操作模式。
例子:
调用sp_migrate_firewall_user_to_group('fwuser@localhost', 'mygroup ');
此过程是在MySQL 8.0.26中添加的。
MySQL Enterprise Firewall管理功能为底层任务提供了API,例如将防火墙缓存与底层系统表同步。
在正常操作下,这些函数由防火墙存储过程调用,而不是由用户直接调用。因此,这些函数描述不包括参数和返回类型等详细信息。
防火墙组配置文件功能
对防火墙组配置文件进行管理操作:
该功能将帐户从组配置文件中移除。它需要
FIREWALL_ADMIN
特权。例子:
SELECT firewall_group_delist('g', 'fwuser@localhost');
此函数是在MySQL 8.0.23中添加的。
该功能可将帐户添加到组配置文件中。它需要
FIREWALL_ADMIN
特权。在将帐户添加到组之前,不需要将帐户本身注册到防火墙。
例子:
SELECT firewall_group_enlist('g', 'fwuser@localhost');
此函数是在MySQL 8.0.23中添加的。
read_firewall_group_allowlist (
集团
,规则
)这个聚合函数更新命名组概要文件的记录语句缓存
选择
关于mysql.firewall_group_allowlist
表格它需要FIREWALL_ADMIN
特权。例子:
SELECT read_firewall_group_allowlist('my_fw_group', fg .rule) FROM mysqlfirewall_group_allowlist AS fgw WHERE NAME = 'my_fw_group';
此函数是在MySQL 8.0.23中添加的。
read_firewall_groups (
集团
,模式
,用户
)这个聚合函数更新防火墙组概要缓存
选择
关于mysql.firewall_groups
表格它需要FIREWALL_ADMIN
特权。例子:
SELECT read_firewall_groups('g', 'RECORDING', 'fwuser@localhost') FROM mysql.firewall_groups;
此函数是在MySQL 8.0.23中添加的。
set_firewall_group_mode (
集团
,模式
(,用户
])该功能管理组配置文件缓存,建立配置文件操作模式,并可选指定配置文件培训帐户。它需要
FIREWALL_ADMIN
特权。如果是可选
用户
参数没有给出,任何先前的用户
配置文件的设置保持不变。要更改设置,请使用第三个参数调用函数。如果是可选
用户
参数时,它指定组配置文件的培训帐户,在配置文件中时使用记录
模式。取值为零
,或非零
具有该格式的帐户
:user_name
@host_name
如果值为
零
,防火墙会记录allowlist规则,用于接收来自组成员的任何帐户的语句。如果为“non-”
零
,防火墙只对从指定帐户(应该是组的成员)接收的语句记录allowlist规则。
例子:
SELECT set_firewall_group_mode('g', ' detection ');
此函数是在MySQL 8.0.23中添加的。
防火墙帐号配置功能
防火墙帐户配置文件管理功能:
这个聚合函数更新防火墙帐户概要文件缓存
选择
关于mysql.firewall_users
表格它需要FIREWALL_ADMIN
特权或被弃用超级
特权。例子:
SELECT read_firewall_users('fwuser@localhost', 'RECORDING') FROM mysql.firewall_users;
从MySQL 8.0.26开始,这个函数已弃用,并将在未来的MySQL版本中被移除。看到将帐户概要文件迁移到组概要文件.
read_firewall_whitelist (
用户
,规则
)这个聚合函数更新命名帐户配置文件的记录语句缓存
选择
关于mysql.firewall_whitelist
表格它需要FIREWALL_ADMIN
特权或被弃用超级
特权。例子:
SELECT read_firewall_whitelist('fwuser@localhost', fw.rule) FROM mysqlfirewall_whitelist AS fw WHERE USERHOST = 'fwuser@localhost';
从MySQL 8.0.26开始,这个函数已弃用,并将在未来的MySQL版本中被移除。看到将帐户概要文件迁移到组概要文件.
该功能管理帐户概要文件缓存并建立概要文件操作模式。它需要
FIREWALL_ADMIN
特权或被弃用超级
特权。例子:
SELECT set_firewall_mode('fwuser@localhost', 'RECORDING');
从MySQL 8.0.26开始,这个函数已弃用,并将在未来的MySQL版本中被移除。看到将帐户概要文件迁移到组概要文件.
防火墙其他功能
这些函数执行各种防火墙操作:
mysql_firewall_flush_status ()
该函数将几个防火墙状态变量重置为0:
此函数需要
FIREWALL_ADMIN
特权或被弃用超级
特权。例子:
选择mysql_firewall_flush_status ();
此函数将SQL语句规范化为用于allowlist规则的摘要形式。它需要
FIREWALL_ADMIN
特权或被弃用超级
特权。例子:
SELECT normalize_statement('SELECT * FROM t1 WHERE c1 > 2');
请注意方法可以在防火墙上下文中使用相同的摘要功能
STATEMENT_DIGEST_TEXT ()
SQL函数。
MySQL企业防火墙支持以下系统变量。用于配置防火墙操作。除非安装了防火墙,否则这些变量不可用(请参阅第6.7.2节“安装或卸载MySQL企业防火墙”).
-
命令行格式 ——mysql-firewall-mode[={|在}]
系统变量 mysql_firewall_mode
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 在
MySQL企业防火墙是否启用(默认)或禁用。
-
命令行格式 ——mysql-firewall-trace[={|在}]
系统变量 mysql_firewall_trace
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 从
MySQL企业防火墙跟踪是否启用或禁用(默认)。当
mysql_firewall_trace
启用,对于保护
模式下,防火墙将被拒绝的语句写入错误日志。
MySQL企业防火墙支持以下状态变量。使用它们可以获取有关防火墙运行状态的信息。除非安装了防火墙,否则这些变量不可用(请参阅第6.7.2节“安装或卸载MySQL企业防火墙”).时,防火墙状态变量设置为0MYSQL_FIREWALL
安装插件或启动服务器。他们中的许多人被重置为零mysql_firewall_flush_status ()
函数(见MySQL企业防火墙管理功能).