Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Legacy Mode Audit Log Filtering

8.4.5.10 遗留模式审核日志过滤

Note

本节描述了遗留审核日志过滤,如果audit_log插件安装时没有伴随的审核表和函数来实现基于规则的过滤。

遗留模式审核日志过滤已弃用。

审核日志插件可以过滤审核事件。这使您可以控制审核事件是否写入审核日志文件,基于事件的来源账户或事件状态。状态过滤分别应用于连接事件和语句事件。

根据账户过滤遗留事件

要根据来源账户过滤审核事件,请在服务器启动或运行时设置以下系统变量之一。这些已弃用的变量仅适用于遗留审核日志过滤。

  • audit_log_include_accounts:要包括在审核日志中的账户。如果设置了这个变量,只有这些账户将被审核。

  • audit_log_exclude_accounts:要从审核日志中排除的账户。如果设置了这个变量,除了这些账户外的所有账户将被审核。

这两个变量的值可以是 NULL 或包含一个或多个以逗号分隔的账户名称的字符串,每个账户名称以 user_name@host_name 格式。默认情况下,两个变量都是 NULL,因此不会进行账户过滤,所有账户都将被审核。

audit_log_include_accountsaudit_log_exclude_accounts 的修改仅影响后续创建的连接,而不影响现有的连接。

示例:要仅对 user1user2 本地主机账户启用审核日志,请设置 audit_log_include_accounts 系统变量如下:

SET GLOBAL audit_log_include_accounts = 'user1@localhost,user2@localhost';

只能同时设置 audit_log_include_accountsaudit_log_exclude_accounts 一个非 NULL 值:

-- This sets audit_log_exclude_accounts to NULL
SET GLOBAL audit_log_include_accounts = value;

-- This fails because audit_log_include_accounts is not NULL
SET GLOBAL audit_log_exclude_accounts = value;

-- To set audit_log_exclude_accounts, first set
-- audit_log_include_accounts to NULL
SET GLOBAL audit_log_include_accounts = NULL;
SET GLOBAL audit_log_exclude_accounts = value;

如果您检查变量的值,请注意SHOW VARIABLESNULL显示为空字符串。要显示NULLNULL,请使用SELECT语句。

mysql> SHOW VARIABLES LIKE 'audit_log_include_accounts';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| audit_log_include_accounts |       |
+----------------------------+-------+
mysql> SELECT @@audit_log_include_accounts;
+------------------------------+
| @@audit_log_include_accounts |
+------------------------------+
| NULL                         |
+------------------------------+

如果用户名或主机名包含逗号、空格或其他特殊字符,需要使用单引号引号。如果变量值本身用单引号引号,请双引号或使用反斜杠转义。以下语句每个都启用了对本地root帐户的审核日志记录,并且尽管引号样式不同,但它们是等效的:

SET GLOBAL audit_log_include_accounts = 'root@localhost';
SET GLOBAL audit_log_include_accounts = '''root''@''localhost''';
SET GLOBAL audit_log_include_accounts = '\'root\'@\'localhost\'';
SET GLOBAL audit_log_include_accounts = "'root'@'localhost'";

如果启用了ANSI_QUOTES SQL 模式,最后一个语句将不起作用,因为在该模式下双引号表示标识符引号,而不是字符串引号。

遗留事件状态过滤

要根据状态过滤审核事件,请在服务器启动或运行时设置以下系统变量。这些弃用变量仅适用于遗留审核日志过滤。对于 JSON 审核日志过滤,应用不同的状态变量;请参阅审核日志选项和变量

每个变量都可以取值ALL(记录所有相关事件;这是默认值),ERRORS(仅记录失败事件)或NONE(不记录事件)。例如,要记录所有语句事件但仅记录失败的连接事件,请使用以下设置:

SET GLOBAL audit_log_statement_policy = ALL;
SET GLOBAL audit_log_connection_policy = ERRORS;

另一个策略系统变量:audit_log_policy, 可用,但不如audit_log_connection_policyaudit_log_statement_policy提供的控制那么多。它只能在服务器启动时设置。

Note

遗留模式系统变量audit_log_policy已弃用。

在运行时,它是一个只读变量。它可以取值:ALL(记录所有事件,默认值),LOGINS(记录连接事件),QUERIES(记录语句事件),或NONE(不记录事件)。对于这些值,审核日志插件将记录所有选定的事件,而不区分成功或失败。使用audit_log_policy在启动时的工作方式如下: