下面的章节提供了MySQL企业防火墙元素的参考:
MySQL企业防火墙在每个组和每个帐户的基础上维护配置文件信息。中的表mysql
系统数据库用于持久存储和INFORMATION_SCHEMA
或Performance Schema表,以提供内存中缓存数据的视图。启用时,防火墙将根据缓存的数据进行操作决策。
防火墙组配置文件表
从MySQL 8.0.23开始,MySQL企业防火墙使用表来维护组配置文件信息mysql
系统数据库用于持久存储和性能模式表,以提供内存中缓存数据的视图。
的帐户才能访问每个系统和性能架构表选择
特权。
的mysql.firewall_groups
已注册的防火墙组配置文件名称及操作方式如下表所示。该表包含以下列(以及相应的性能架构firewall_groups
有相似但不一定相同列的表):
的名字
组配置文件名称。
模式
概要文件的当前操作模式。允许的模式值为
从
,检测
,保护
,记录
.有关它们含义的详细信息,请参见防火墙的概念.USERHOST
组配置文件的训练帐户,在配置文件中时使用
记录
模式。这个值是零
,或非-零
具有格式的帐户
:user_name
@host_name
如果值为
零
,防火墙记录allowlist规则从组的任何成员帐户收到的语句。取值为“non-”
零
,防火墙只对从指定帐户(应该是组的成员)接收的语句记录allowlist规则。
的mysql.firewall_group_allowlist
表中列出了已注册防火墙组配置文件的allowlist规则。该表包含以下列(以及相应的性能架构firewall_group_allowlist
有相似但不一定相同列的表):
的名字
组配置文件名称。
规则
指示概要文件可接受的语句模式的规范化语句。配置文件allowlist是其规则的并集。
ID
作为表的主键的整数列。
的mysql.firewall_membership
已注册防火墙组配置文件的成员(账号)如表3 - 2所示。该表包含以下列(以及相应的性能架构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
系统数据库。若要调用防火墙存储过程,请在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”、“保护”);
在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
提供持久底层存储的系统数据库表。切换模式从
来记录
对象重新加载allowlistmysql.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企业防火墙管理功能为低级任务提供了一个API,比如将防火墙缓存与底层系统表同步。
在正常操作下,这些函数由防火墙存储过程调用,而不是由用户直接调用。因此,这些函数描述不包括关于它们的参数和返回类型的信息等细节。
防火墙组配置文件功能
对防火墙组配置文件进行管理操作:
此功能从组配置文件中删除帐户。它要求
FIREWALL_ADMIN
特权。例子:
选择firewall_group_delist(“g”,“fwuser@localhost”);
此功能在MySQL 8.0.23中新增。
此功能将帐户添加到组配置文件中。它要求
FIREWALL_ADMIN
特权。在将帐户添加到组之前,不需要向防火墙注册帐户本身。
例子:
选择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', fgw.rule) FROM mysql。firewall_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规则。
例子:
选择set_firewall_group_mode(“g”、“检测”);
此功能在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 mysql。WHERE USERHOST = 'fwuser@localhost';
从MySQL 8.0.26开始,这个函数已被弃用,并将在未来的MySQL版本中删除。看到将帐户概要文件迁移到组概要文件.
此功能管理帐户配置文件缓存并建立配置文件操作模式。它要求
FIREWALL_ADMIN
特权或被弃用的超级
特权。例子:
选择set_firewall_mode(“fwuser@localhost”、“记录”);
从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.4.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.4.7.2节“安装或卸载MySQL企业防火墙”).时,将防火墙状态变量设置为0MYSQL_FIREWALL
安装插件或启动服务器。很多都被重置为零mysql_firewall_flush_status ()
函数(见MySQL企业防火墙管理功能).