Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

8.4.5.10 Legacy 模式审计日志过滤

Note

本节描述了 legacy 审计日志过滤,适用于安装了 audit_log 插件但没有相应的 audit 表和函数的规则过滤。

Legacy 模式 Audit Log 过滤已弃用。

Audit 日志插件可以过滤审计事件。这使您能够控制是否将审计事件写入 audit 日志文件,基于事件的来源账户或事件状态。状态过滤分别对连接事件和语句事件进行。

根据事件的来源账户过滤审计事件,服务器启动或运行时设置一个(不两个)以下系统变量。这些已弃用的变量仅适用于 legacy 审计日志过滤。

这两个变量的值可以是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 VARIABLES将显示NULL为空字符串。要显示NULLNULLSELECT语句:

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 模式下不起作用,因为在该模式下双引号表示标识符引号,而不是字符串引号。

为了根据状态过滤审核事件,在服务器启动或运行时设置以下系统变量。这些已弃用的变量仅适用于遗留审核日志 filtering。对于 JSON 审核日志 filtering,需要查看Audit Log Options and Variables

每个变量都可以取值为 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在启动时工作如下: