#### 6.4.5.11 审核日志参考

以下部分提供了对 MySQL Enterprise Audit 元素的参考：

-   [审核日志表](audit-log-reference.html#audit-log-tables)

-   [审计日志功能](audit-log-reference.html#audit-log-routines)

-   [审计日志选项和变量参考](audit-log-reference.html#audit-log-option-variable-reference)

-   [审核日志选项和变量](audit-log-reference.html#audit-log-options-variables)

-   [审核日志状态变量](audit-log-reference.html#audit-log-status-variables)

    要安装审计日志表和函数，请使用提供的说明[第 6.4.5.2 节，“安装或卸载 MySQL Enterprise Audit”](audit-log-installation.html).除非安装了这些对象，否则`审计日志`插件在传统模式下运行。看[第 6.4.5.10 节，“传统模式审核日志过滤”](audit-log-legacy-filtering.html).

##### 审核日志表

MySQL Enterprise Audit 在`mysql`系统数据库，用于持久存储过滤器和用户帐户数据。只有对该数据库具有权限的用户才能访问这些表。这些表使用`InnoDB`存储引擎。

如果缺少这些表，则`审计日志`插件在传统模式下运行。看[第 6.4.5.10 节，“传统模式审核日志过滤”](audit-log-legacy-filtering.html).

这`审计日志过滤器`表存储过滤器定义。该表具有以下列：

-   `姓名`

    过滤器名称。

-   `筛选`

    与过滤器名称关联的过滤器定义。定义存储为[`JSON`](json.html)价值观。

    这`审计日志用户`表存储用户帐户信息。该表具有以下列：

-   `用户`

    帐户的用户名部分。对于一个帐户`user1@localhost`， 这`用户`部分是`用户1`.

-   `主持人`

    帐户的主机名部分。对于一个帐户`user1@localhost`， 这`主持人`部分是`本地主机`.

-   `过滤器名称`

    分配给帐户的过滤器的名称。过滤器名称将帐户与在`审计日志过滤器`桌子。

##### 审计日志功能

本节描述了每个审计日志函数的用途、调用顺序和返回值。有关可以调用这些函数的条件的信息，请参阅[第 6.4.5.7 节，“审核日志过滤”](audit-log-filtering.html).

每个审计日志函数都会返回一个字符串，指示操作是否成功。`好的`表示成功。`错误： *`信息`*`表示失败。

从 MySQL 8.0.19 开始，审计日志函数将字符串参数转换为`utf8mb4`和字符串返回值是`utf8mb4`字符串。在 MySQL 8.0.19 之前，审计日志函数将字符串参数视为二进制字符串（这意味着它们不区分字母大小写），字符串返回值是二进制字符串。

如果从内部调用审计日志函数[**mysql**](mysql.html)客户端，二进制字符串结果使用十六进制表示法显示，具体取决于[`--binary-as-hex`](mysql-command-options.html#option_mysql_binary-as-hex).有关该选项的更多信息，请参阅[第 4.5.1 节，“mysql - MySQL 命令行客户端”](mysql.html).

这些审计日志功能可用：

-   [](<>) [`audit_log_encryption_password_get([*`keyring_id`*])`](audit-log-reference.html#function_audit-log-encryption-password-get)

    [](<>)[](<>)

    此函数从 MySQL 密钥环中获取审计日志加密密码，必须启用，否则会出错。可以使用任何密钥环组件或插件；有关说明，请参阅[第 6.4.4 节，“MySQL 密钥环”](keyring.html).

    如果没有参数，该函数将当前加密密码检索为二进制字符串。可以给出一个参数来指定要检索的审计日志加密密码。参数必须是当前密码的密钥环 ID 或存档密码。

    有关审核日志加密的更多信息，请参阅[加密审计日志文件](audit-log-logging-configuration.html#audit-log-file-encryption).

    论据：

    *`keyring_id`*：从 MySQL 8.0.17 开始，此可选参数指示要检索的密码的密钥环 ID。最大允许长度为 766 字节。如果省略，该函数将检索当前密码。

    在 MySQL 8.0.17 之前，不允许使用任何参数。该函数始终检索当前密码。

    返回值：

    成功的密码字符串（最多 766 个字节），或`空值`和失败的错误。

    例子：

    检索当前密码：

    ```
    mysql> SELECT audit_log_encryption_password_get();
    +-------------------------------------+
    | audit_log_encryption_password_get() |
    +-------------------------------------+
    | secret                              |
    +-------------------------------------+
    ```

    要按 ID 检索密码，您可以通过查询性能架构来确定存在哪些审计日志密钥环 ID[`钥匙圈钥匙`](performance-schema-keyring-keys-table.html)桌子：

    [](<>)[](<>)

    ```
    mysql> SELECT KEY_ID FROM performance_schema.keyring_keys
           WHERE KEY_ID LIKE 'audit_log%'
           ORDER BY KEY_ID;
    +-----------------------------+
    | KEY_ID                      |
    +-----------------------------+
    | audit_log-20190415T152248-1 |
    | audit_log-20190415T153507-1 |
    | audit_log-20190416T125122-1 |
    | audit_log-20190416T141608-1 |
    +-----------------------------+
    mysql> SELECT audit_log_encryption_password_get('audit_log-20190416T125122-1');
    +------------------------------------------------------------------+
    | audit_log_encryption_password_get('audit_log-20190416T125122-1') |
    +------------------------------------------------------------------+
    | segreto                                                          |
    +------------------------------------------------------------------+
    ```

-   [](<>) [`audit_log_encryption_password_set(*`密码`*)`](audit-log-reference.html#function_audit-log-encryption-password-set)

    [](<>)[](<>)

    将当前审计日志加密密码设置为参数并将密码存储在 MySQL 密钥环中。从 MySQL 8.0.19 开始，密码存储为`utf8mb4`细绳。在 MySQL 8.0.19 之前，密码以二进制形式存储。

    如果启用加密，此函数将执行日志文件轮换操作，重命名当前日志文件，并开始使用密码加密的新日志文件。必须启用密钥环，否则会发生错误。可以使用任何密钥环组件或插件；有关说明，请参阅[第 6.4.4 节，“MySQL 密钥环”](keyring.html).

    有关审核日志加密的更多信息，请参阅[加密审计日志文件](audit-log-logging-configuration.html#audit-log-file-encryption).

    论据：

    *`密码`*: 密码字符串。最大允许长度为 766 字节。

    返回值：

    1代表成功，0代表失败。

    例子：

    ```
    mysql> SELECT audit_log_encryption_password_set(password);
    +---------------------------------------------+
    | audit_log_encryption_password_set(password) |
    +---------------------------------------------+
    | 1                                           |
    +---------------------------------------------+
    ```

-   [](<>) [`audit_log_filter_flush()`](audit-log-reference.html#function_audit-log-filter-flush)

    [](<>)[](<>)

    调用任何其他过滤函数会立即影响操作审计日志过滤并更新审计日志表。相反，如果您直接使用以下语句修改这些表的内容[`插入`](insert.html),[`更新`](update.html)， 和[`删除`](delete.html)，更改不会立即影响过滤。要刷新您的更改并使其可操作，请致电[`audit_log_filter_flush()`](audit-log-reference.html#function_audit-log-filter-flush).

    警告

    [`audit_log_filter_flush()`](audit-log-reference.html#function_audit-log-filter-flush)仅应在直接修改审计表后使用，以强制重新加载所有过滤器。否则，应避免使用此功能。实际上，它是卸载和重新加载`审计日志`插件与[`卸载插件`](uninstall-plugin.html)加[`安装插件`](install-plugin.html).

    [`audit_log_filter_flush()`](audit-log-reference.html#function_audit-log-filter-flush)影响所有当前会话并将它们与之前的过滤器分离。当前会话不再被记录，除非它们断开连接并重新连接，或执行更改用户操作。

    如果此函数失败，则返回错误消息并禁用审计日志，直到下一次成功调用[`audit_log_filter_flush()`](audit-log-reference.html#function_audit-log-filter-flush).

    论据：

    没有。

    返回值：

    指示操作是否成功的字符串。`好的`表示成功。`错误： *`信息`*`表示失败。

    例子：

    ```
    mysql> SELECT audit_log_filter_flush();
    +--------------------------+
    | audit_log_filter_flush() |
    +--------------------------+
    | OK                       |
    +--------------------------+
    ```

-   [](<>) [`audit_log_filter_remove_filter(*`过滤器名称`*)`](audit-log-reference.html#function_audit-log-filter-remove-filter)

    [](<>)[](<>)

    给定过滤器名称，从当前过滤器集中删除过滤器。过滤器不存在并不是错误。

    如果将删除的过滤器分配给任何用户帐户，则这些用户将停止被过滤（他们将从`审计日志用户`桌子）。过滤的终止包括这些用户的任何当前会话：它们与过滤器分离并且不再记录。

    论据：

    -   *`过滤器名称`*：指定过滤器名称的字符串。

        返回值：

        指示操作是否成功的字符串。`好的`表示成功。`错误： *`信息`*`表示失败。

        例子：

    ```
    mysql> SELECT audit_log_filter_remove_filter('SomeFilter');
    +----------------------------------------------+
    | audit_log_filter_remove_filter('SomeFilter') |
    +----------------------------------------------+
    | OK                                           |
    +----------------------------------------------+
    ```

-   [](<>) [`audit_log_filter_remove_user(*`用户名`*)`](audit-log-reference.html#function_audit-log-filter-remove-user)

    [](<>)[](<>)

    给定用户帐户名称，使用户不再分配给过滤器。如果用户没有分配过滤器，这不是错误。过滤用户当前会话不受影响。如果有，则使用默认帐户过滤器过滤用户的新连接，否则不记录。

    如果名字是`%`，该函数删除用于没有明确分配过滤器的任何用户帐户的默认帐户过滤器。

    论据：

    -   *`用户名`*: 用户帐户名作为字符串`*`用户名`*@*`主机名`*`格式，或`%`代表默认帐户。

        返回值：

        指示操作是否成功的字符串。`好的`表示成功。`错误： *`信息`*`表示失败。

        例子：

    ```
    mysql> SELECT audit_log_filter_remove_user('user1@localhost');
    +-------------------------------------------------+
    | audit_log_filter_remove_user('user1@localhost') |
    +-------------------------------------------------+
    | OK                                              |
    +-------------------------------------------------+
    ```

-   [](<>) [`audit_log_filter_set_filter(*`过滤器名称`*, *`定义`*)`](audit-log-reference.html#function_audit-log-filter-set-filter)

    [](<>)[](<>)

    给定过滤器名称和定义，将过滤器添加到当前过滤器集中。如果过滤器已经存在并且被任何当前会话使用，那么这些会话将从过滤器中分离并且不再被记录。发生这种情况是因为新过滤器定义具有与其先前 ID 不同的新过滤器 ID。

    论据：

    -   *`过滤器名称`*：指定过滤器名称的字符串。

    -   *`定义`*： 一种[`JSON`](json.html)指定过滤器定义的值。

        返回值：

        指示操作是否成功的字符串。`好的`表示成功。`错误： *`信息`*`表示失败。

        例子：

    ```
    mysql> SET @f = '{ "filter": { "log": false } }';
    mysql> SELECT audit_log_filter_set_filter('SomeFilter', @f);
    +-----------------------------------------------+
    | audit_log_filter_set_filter('SomeFilter', @f) |
    +-----------------------------------------------+
    | OK                                            |
    +-----------------------------------------------+
    ```

-   [](<>) [`audit_log_filter_set_user(*`用户名`*, *`过滤器名称`*)`](audit-log-reference.html#function_audit-log-filter-set-user)

    [](<>)[](<>)

    给定用户帐户名称和过滤器名称，将过滤器分配给用户。一个用户只能分配一个过滤器，因此如果该用户已经分配了一个过滤器，那么分配将被替换。过滤用户当前会话不受影响。使用新过滤器过滤新连接。

    作为一种特殊情况，名称`%`代表默认帐户。过滤器用于来自没有明确分配过滤器的任何用户帐户的连接。

    论据：

    -   *`用户名`*: 用户帐户名作为字符串`*`用户名`*@*`主机名`*`格式，或`%`代表默认帐户。

    -   *`过滤器名称`*：指定过滤器名称的字符串。

        返回值：

        指示操作是否成功的字符串。`好的`表示成功。`错误： *`信息`*`表示失败。

        例子：

    ```
    mysql> SELECT audit_log_filter_set_user('user1@localhost', 'SomeFilter');
    +------------------------------------------------------------+
    | audit_log_filter_set_user('user1@localhost', 'SomeFilter') |
    +------------------------------------------------------------+
    | OK                                                         |
    +------------------------------------------------------------+
    ```

-   [](<>) [`审计日志读取（[*`参数`*])`](audit-log-reference.html#function_audit-log-read)

    [](<>)[](<>)

    读取审计日志并返回一个[`JSON`](json.html)字符串结果。如果审核日志格式不是[`JSON`](json.html)，发生错误。

    没有论据或[`JSON`](json.html)哈希参数，[`审计日志读取（）`](audit-log-reference.html#function_audit-log-read)从审计日志中读取事件并返回一个[`JSON`](json.html)包含审计事件数组的字符串。散列参数中的项目会影响读取的发生方式，如下所述。返回数组中的每个元素都是一个事件，表示为[`JSON`](json.html)哈希，除了最后一个元素可能是[`JSON`](json.html) `空值`值表示没有以下事件可供读取。

    带有一个由 a 组成的参数[`JSON`](json.html) `空值`价值，[`审计日志读取（）`](audit-log-reference.html#function_audit-log-read)关闭当前读取序列。

    有关审核日志读取过程的更多详细信息，请参阅[第 6.4.5.6 节，“读取审核日志文件”](audit-log-file-reading.html).

    论据：

    要获取最近写入事件的书签，请调用[`audit_log_read_bookmark()`](audit-log-reference.html#function_audit-log-read-bookmark).

    *`参数`*: 参数是可选的。如果省略，函数从当前位置读取事件。如果存在，参数可以是[`JSON`](json.html) `空值`关闭读取序列的值，或[`JSON`](json.html)哈希。在散列参数中，项目是可选的，并且控制读取操作的各个方面，例如开始读取的位置或要读取的事件数。以下项目很重要（其他项目被忽略）：

    -   `开始`：要读取的第一个事件在审计日志中的位置。该位置以时间戳的形式给出，读取从时间戳值上或之后发生的第一个事件开始。这`开始`项目具有这种格式，其中*`价值`*是文字时间戳值：

        ```
        "start": { "timestamp": "value" }
        ```

        这`开始`从 MySQL 8.0.22 开始允许使用 item。

    -   `时间戳`,`id`：要读取的第一个事件在审计日志中的位置。这`时间戳`和`id`项目共同组成一个书签，该书签唯一地标识特定事件。如果[`审计日志读取（）`](audit-log-reference.html#function_audit-log-read)参数包含任何一项，它必须包含两者才能完全指定位置，否则会发生错误。

    -   `最大数组长度`：从日志中读取的最大事件数。如果省略此项，则默认读取到日志末尾或直到读取缓冲区已满，以先到者为准。

        指定起始位置[`审计日志读取（）`](audit-log-reference.html#function_audit-log-read)，传递一个哈希参数，其中包括`开始`项目或书签组成`时间戳`和`id`项目。如果散列参数同时包含`开始`项目和书签，发生错误。

        如果散列参数没有指定起始位置，则从当前位置继续读取。

        如果时间戳值不包含时间部分，则`00:00:00`假设。

        返回值：

        如果调用成功，则返回值为[`JSON`](json.html)包含审计事件数组的字符串，或[`JSON`](json.html) `空值`如果该值作为参数传递以关闭读取序列。如果调用失败，返回值为`空值`并发生错误。

        例子：

    ```
    mysql> SELECT audit_log_read(audit_log_read_bookmark());
    +-----------------------------------------------------------------------+
    | audit_log_read(audit_log_read_bookmark())                             |
    +-----------------------------------------------------------------------+
    | [ {"timestamp":"2020-05-18 22:41:24","id":0,"class":"connection", ... |
    +-----------------------------------------------------------------------+
    mysql> SELECT audit_log_read('null');
    +------------------------+
    | audit_log_read('null') |
    +------------------------+
    | null                   |
    +------------------------+
    ```

    笔记：

    在 MySQL 8.0.19 之前，字符串返回值是二进制的[`JSON`](json.html)字符串。有关将此类值转换为非二进制字符串的信息，请参阅[第 6.4.5.6 节，“读取审核日志文件”](audit-log-file-reading.html).

-   [](<>) [`audit_log_read_bookmark()`](audit-log-reference.html#function_audit-log-read-bookmark)

    [](<>)[](<>)

    返回一个[`JSON`](json.html)表示最近写入的审计日志事件的书签的字符串。如果审核日志格式不是[`JSON`](json.html)，发生错误。

    书签是一个[`JSON`](json.html)哈希与`时间戳`和`id`唯一标识审计日志中事件位置的项目。它适合传递给[`审计日志读取（）`](audit-log-reference.html#function_audit-log-read)向该函数指示开始读取的位置。

    有关审核日志读取过程的更多详细信息，请参阅[第 6.4.5.6 节，“读取审核日志文件”](audit-log-file-reading.html).

    论据：

    没有。

    返回值：

    一种[`JSON`](json.html)包含成功书签的字符串，或`空值`和失败的错误。

    例子：

    ```
    mysql> SELECT audit_log_read_bookmark();
    +-------------------------------------------------+
    | audit_log_read_bookmark()                       |
    +-------------------------------------------------+
    | { "timestamp": "2019-10-03 21:03:44", "id": 0 } |
    +-------------------------------------------------+
    ```

    笔记：

    在 MySQL 8.0.19 之前，字符串返回值是二进制的[`JSON`](json.html)字符串。有关将此类值转换为非二进制字符串的信息，请参阅[第 6.4.5.6 节，“读取审核日志文件”](audit-log-file-reading.html).

##### 审计日志选项和变量参考

[](<>)

**表 6.43 审计日志选项和变量参考**

| 姓名 | 命令行 | 选项文件 | 系统变量 | 状态变量 | 变量范围 | 动态的 |
| --- | --- | ---- | ---- | ---- | ---- | --- |
| [审计日志](audit-log-reference.html#option_mysqld_audit-log) | 是的 | 是的 |  |  |  |  |
| [审计\_日志\_缓冲\_尺寸](audit-log-reference.html#sysvar_audit_log_buffer_size) | 是的 | 是的 | 是的 |  | 全球的 | 不 |
| [审计\_日志\_压缩](audit-log-reference.html#sysvar_audit_log_compression) | 是的 | 是的 | 是的 |  | 全球的 | 不 |
| [审计\_日志\_联系\_政策](audit-log-reference.html#sysvar_audit_log_connection_policy) | 是的 | 是的 | 是的 |  | 全球的 | 是的 |
| [审计\_日志\_当前的\_会议](audit-log-reference.html#sysvar_audit_log_current_session) |  |  | 是的 |  | 两个都 | 不 |
| [审计\_日志\_当前的\_尺寸](audit-log-reference.html#statvar_Audit_log_current_size) |  |  |  | 是的 | 全球的 | 不 |
| [审计\_日志\_禁用](audit-log-reference.html#sysvar_audit_log_disable) | 是的 | 是的 | 是的 |  | 全球的 | 是的 |
| [审计\_日志\_加密](audit-log-reference.html#sysvar_audit_log_encryption) | 是的 | 是的 | 是的 |  | 全球的 | 不 |
| [审计\_日志\_事件\_最大限度\_降低\_尺寸](audit-log-reference.html#statvar_Audit_log_event_max_drop_size) |  |  |  | 是的 | 全球的 | 不 |
| [审计\_日志\_事件](audit-log-reference.html#statvar_Audit_log_events) |  |  |  | 是的 | 全球的 | 不 |
| [审计\_日志\_事件\_过滤](audit-log-reference.html#statvar_Audit_log_events_filtered) |  |  |  | 是的 | 全球的 | 不 |
| [审计\_日志\_事件\_丢失](audit-log-reference.html#statvar_Audit_log_events_lost) |  |  |  | 是的 | 全球的 | 不 |
| [审计\_日志\_事件\_书面](audit-log-reference.html#statvar_Audit_log_events_written) |  |  |  | 是的 | 全球的 | 不 |
| [审计\_日志\_排除\_帐户](audit-log-reference.html#sysvar_audit_log_exclude_accounts) | 是的 | 是的 | 是的 |  | 全球的 | 是的 |
| [审计\_日志\_文件](audit-log-reference.html#sysvar_audit_log_file) | 是的 | 是的 | 是的 |  | 全球的 | 不 |
| [审计\_日志\_筛选\_id](audit-log-reference.html#sysvar_audit_log_filter_id) |  |  | 是的 |  | 两个都 | 不 |
| [审计\_日志\_冲洗](audit-log-reference.html#sysvar_audit_log_flush) |  |  | 是的 |  | 全球的 | 是的 |
| [审计\_日志\_格式](audit-log-reference.html#sysvar_audit_log_format) | 是的 | 是的 | 是的 |  | 全球的 | 不 |
| [审计\_日志\_包括\_帐户](audit-log-reference.html#sysvar_audit_log_include_accounts) | 是的 | 是的 | 是的 |  | 全球的 | 是的 |
| [审计\_日志\_密码\_历史\_保持\_天](audit-log-reference.html#sysvar_audit_log_password_history_keep_days) | 是的 | 是的 | 是的 |  | 全球的 | 是的 |
| [审计\_日志\_政策](audit-log-reference.html#sysvar_audit_log_policy) | 是的 | 是的 | 是的 |  | 全球的 | 不 |
| [审计\_日志\_修剪\_秒](audit-log-reference.html#sysvar_audit_log_prune_seconds) | 是的 | 是的 | 是的 |  | 全球的 | 是的 |
| [审计\_日志\_读\_缓冲\_尺寸](audit-log-reference.html#sysvar_audit_log_read_buffer_size) | 是的 | 是的 | 是的 |  | 变化 | 变化 |
| [审计\_日志\_旋转\_在\_尺寸](audit-log-reference.html#sysvar_audit_log_rotate_on_size) | 是的 | 是的 | 是的 |  | 全球的 | 是的 |
| [审计\_日志\_陈述\_政策](audit-log-reference.html#sysvar_audit_log_statement_policy) | 是的 | 是的 | 是的 |  | 全球的 | 是的 |
| [审计\_日志\_战略](audit-log-reference.html#sysvar_audit_log_strategy) | 是的 | 是的 | 是的 |  | 全球的 | 不 |
| [审计\_日志\_全部的\_尺寸](audit-log-reference.html#statvar_Audit_log_total_size) |  |  |  | 是的 | 全球的 | 不 |
| [审计\_日志\_写\_等待](audit-log-reference.html#statvar_Audit_log_write_waits) |  |  |  | 是的 | 全球的 | 不 |

##### 审核日志选项和变量

本节介绍配置 MySQL Enterprise Audit 操作的命令选项和系统变量。如果在启动时指定的值不正确，则`审计日志`插件可能无法正确初始化并且服务器不会加载它。在这种情况下，服务器也可能会为其他审核日志设置生成错误消息，因为它无法识别它们。

要配置审计日志插件的激活，请使用此选项：

-   [](<>) [`--审计日志[=*`价值`*]`](audit-log-reference.html#option_mysqld_audit-log)

     [](<>)[](<>)

    | 命令行格式 | `--审计日志[=值]` |
    | ----- | ------------ |
    | 类型 | 枚举 |
    | 默认值 | `在` |
    | 有效值 | `在`<br/><br/>`离开`<br/><br/>`力量`<br/><br/>`FORCE_PLUS_PERMANENT` |

    此选项控制服务器如何加载`审计日志`启动时的插件。仅当插件先前已注册时才可用[`安装插件`](install-plugin.html)或装有[`--插件加载`](server-options.html#option_mysqld_plugin-load)要么[`--plugin-load-add`](server-options.html#option_mysqld_plugin-load-add).看[第 6.4.5.2 节，“安装或卸载 MySQL Enterprise Audit”](audit-log-installation.html).

    选项值应该是可用于插件加载选项的选项之一，如中所述[第 5.6.1 节，“安装和卸载插件”](plugin-loading.html).例如，[`--audit-log=FORCE_PLUS_PERMANENT`](audit-log-reference.html#option_mysqld_audit-log)告诉服务器加载插件并防止在服务器运行时将其删除。

    如果启用了审计日志插件，它会公开几个允许控制日志记录的系统变量：


```
mysql> SHOW VARIABLES LIKE 'audit_log%';
+-----------------------------+--------------+
| Variable_name               | Value        |
+-----------------------------+--------------+
| audit_log_buffer_size       | 1048576      |
| audit_log_connection_policy | ALL          |
| audit_log_current_session   | OFF          |
| audit_log_exclude_accounts  |              |
| audit_log_file              | audit.log    |
| audit_log_filter_id         | 0            |
| audit_log_flush             | OFF          |
| audit_log_format            | NEW          |
| audit_log_include_accounts  |              |
| audit_log_policy            | ALL          |
| audit_log_rotate_on_size    | 0            |
| audit_log_statement_policy  | ALL          |
| audit_log_strategy          | ASYNCHRONOUS |
+-----------------------------+--------------+
```

您可以在服务器启动时设置任何这些变量，其中一些在运行时设置。那些仅可用于传统模式审计日志过滤的会被注明。

-   [](<>) [`审计日志缓冲区大小`](audit-log-reference.html#sysvar_audit_log_buffer_size)

    [](<>)[](<>)

    | 命令行格式 | `--审计日志缓冲区大小=#` |
    | ----- | --------------- |
    | 系统变量 | `[audit_log_buffer_size](audit-log-reference.html#sysvar_audit_log_buffer_size)` |
    | 范围 | 全球的 |
    | 动态的 | 不 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `1048576` |
    | 最小值 | `4096` |
    | 最大值（64 位平台） | `18446744073709547520` |
    | 最大值（32 位平台） | `4294967295` |
    | 块大小 | `4096` |

    当审计日志插件将事件异步写入日志时，它会在写入之前使用缓冲区存储事件内容。这个变量控制缓冲区的大小，以字节为单位。服务器将该值调整为4096的倍数。该插件使用单个缓冲区，初始化时分配缓冲区，终止时删除缓冲区。只有在日志记录是异步的情况下，插件才会分配这个缓冲区。

-   [](<>) [`审核日志禁用`](audit-log-reference.html#sysvar_audit_log_disable)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志禁用[={OFF | ON}]` |
    | ----- | ----------------------- |
    | 介绍 | 8.0.28 |
    | 系统变量 | `[audit_log_disable]（audit log reference.html#sysvar_audit_log_disable）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    允许禁用所有连接和连接会话的审核日志记录。除了[`系统变量管理`](privileges-provided.html#priv_system-variables-admin)权限，禁用审核日志需要[`审计及行政`](privileges-provided.html#priv_audit-admin)特权看见[第6.4.5.9节，“禁用审核日志记录”](audit-log-disabling.html).

-   [](<>) [`审计日志压缩`](audit-log-reference.html#sysvar_audit_log_compression)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志压缩=值` |
    | ----- | ------------ |
    | 系统变量 | `[audit_log_compression]（audit log reference.html#sysvar_audit_log_compression）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 列举 |
    | 默认值 | `没有一个` |
    | 有效值 | `没有一个`<br/><br/>`GZIP` |

    审核日志文件的压缩类型。允许值为`没有一个`（无压缩；默认设置）和`GZIP`（GNU压缩）。有关更多信息，请参阅[压缩审核日志文件](audit-log-logging-configuration.html#audit-log-file-compression).

-   [](<>) [`审核日志连接策略`](audit-log-reference.html#sysvar_audit_log_connection_policy)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志连接策略=值` |
    | ----- | -------------- |
    | 系统变量 | `[audit_log_connection_policy]（audit log reference.html#sysvar_audit_log_connection_policy）` |
    | 范围 | 全球的 |
    | 动态 | 是的 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 枚举 |
    | 默认值 | `全部` |
    | 有效值 | `全部`<br/><br/>`错误`<br/><br/>`没有` |

    笔记

    此变量仅适用于传统模式审核日志过滤（请参阅[第 6.4.5.10 节，“传统模式审核日志过滤”](audit-log-legacy-filtering.html)）。

    控制审计日志插件如何将连接事件写入其日志文件的策略。下表显示了允许的值。

    | 价值 | 描述 |
    | --- | --- |
    | `全部` | 记录所有连接事件 |
    | `错误` | 仅记录失败的连接事件 |
    | `没有` | 不记录连接事件 |

    笔记

    在服务器启动时，为[`audit_log_connection_policy`](audit-log-reference.html#sysvar_audit_log_connection_policy)可能会被覆盖，如果[`audit_log_policy`](audit-log-reference.html#sysvar_audit_log_policy)也被指定，如在[第 6.4.5.5 节，“配置审核日志记录特性”](audit-log-logging-configuration.html).

-   [](<>) [`audit_log_current_session`](audit-log-reference.html#sysvar_audit_log_current_session)

    [](<>)[](<>)

    | 系统变量 | `[audit_log_current_session](audit-log-reference.html#sysvar_audit_log_current_session)` |
    | ---- | ---------------------------------------------------------------------------------------- |
    | 范围 | 全球, 会话 |
    | 动态的 | 不 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `取决于过滤策略` |

    是否为当前会话启用审计日志记录。此变量的会话值是只读的。它是在会话开始时根据[`audit_log_include_accounts`](audit-log-reference.html#sysvar_audit_log_include_accounts)和[`audit_log_exclude_accounts`](audit-log-reference.html#sysvar_audit_log_exclude_accounts)系统变量。审计日志插件使用会话值来确定是否审计会话的事件。（有一个全局值，但插件不使用它。）

-   [](<>) [`审计日志加密`](audit-log-reference.html#sysvar_audit_log_encryption)

    [](<>)[](<>)

    | 命令行格式 | `--审计日志加密=值` |
    | ----- | ------------ |
    | 系统变量 | `[audit_log_encryption](audit-log-reference.html#sysvar_audit_log_encryption)` |
    | 范围 | 全球的 |
    | 动态的 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 列举 |
    | 默认值 | `没有一个` |
    | 有效值 | `没有一个`<br/><br/>`AES` |

    审核日志文件的加密类型。允许值为`没有一个`（无加密；默认设置）和`AES`（AES-256-CBC密码加密）。有关更多信息，请参阅[加密审核日志文件](audit-log-logging-configuration.html#audit-log-file-encryption).

-   [](<>) [`审核日志排除账户`](audit-log-reference.html#sysvar_audit_log_exclude_accounts)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志排除帐户=值` |
    | ----- | -------------- |
    | 系统变量 | `[audit_log_exclude_accounts]（audit log reference.html#sysvar_audit_log_exclude_accounts）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 一串 |
    | 默认值 | `无效的` |

    笔记

    此变量仅适用于传统模式审核日志筛选（请参阅[第6.4.5.10节，“传统模式审核日志筛选”](audit-log-legacy-filtering.html)).

    不应记录其事件的帐户。价值应该是`无效的`或包含一个或多个以逗号分隔的帐户名列表的字符串。有关更多信息，请参阅[第6.4.5.7节，“审核日志过滤”](audit-log-filtering.html).

    修改[`审核日志排除账户`](audit-log-reference.html#sysvar_audit_log_exclude_accounts)仅影响修改后创建的连接，不影响现有连接。

-   [](<>) [`审核日志文件`](audit-log-reference.html#sysvar_audit_log_file)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志文件=文件名` |
    | ----- | -------------- |
    | 系统变量 | `[audit_log_file]（audit log reference.html#sysvar_audit_log_file）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 文件名 |
    | 默认值 | `审计日志` |

    审核日志插件向其写入事件的文件的基本名称和后缀。默认值为`审计日志`，而不考虑日志记录格式。要使名称后缀与格式相对应，请显式设置名称，选择不同的后缀（例如，`审计xml`对于XML格式，`审计json`用于JSON格式）。

    如果[`审核日志文件`](audit-log-reference.html#sysvar_audit_log_file)是一个相对路径名，插件根据数据目录对其进行解释。如果该值是完整路径名，插件将按原样使用该值。如果希望在单独的文件系统或目录中查找审核文件，则完整路径名可能很有用。出于安全原因，请将审核日志文件写入一个目录，该目录只能由MySQL服务器和有正当理由查看日志的用户访问。

    有关审核日志插件如何解释[`审核日志文件`](audit-log-reference.html#sysvar_audit_log_file)值以及插件初始化和终止时发生的文件重命名规则，请参阅[审核日志文件的命名约定](audit-log-logging-configuration.html#audit-log-file-name).

    审计日志插件使用包含审计日志文件的目录（根据[`审核日志文件`](audit-log-reference.html#sysvar_audit_log_file)值）作为搜索可读审计日志文件的位置。从这些日志文件和当前文件中，插件构建了一个列表，列出了审计日志书签和读取功能需要使用的文件。看见[第6.4.5.6节，“读取审核日志文件”](audit-log-file-reading.html).

-   [](<>) [`审核日志过滤器id`](audit-log-reference.html#sysvar_audit_log_filter_id)

    [](<>)[](<>)

    | 系统变量 | `[audit_log_filter_id]（audit log reference.html#sysvar_audit_log_filter_id）` |
    | ---- | ---------------------------------------------------------------------------- |
    | 范围 | 全球会议 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |

    此变量的会话值表示当前会话的审核筛选器的内部维护ID。值为0表示会话未分配筛选器。

-   [](<>) [`审核日志刷新`](audit-log-reference.html#sysvar_audit_log_flush)

    [](<>)[](<>)

    | 系统变量 | `[audit_log_flush]（audit log reference.html#sysvar_audit_log_flush）` |
    | ---- | -------------------------------------------------------------------- |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    如果[`审核日志旋转大小`](audit-log-reference.html#sysvar_audit_log_rotate_on_size)为0时，自动审核日志文件旋转将被禁用，并且仅当手动执行时才会发生旋转。在这种情况下[`审核日志刷新`](audit-log-reference.html#sysvar_audit_log_flush)通过将其设置为1或`在…上`导致审核日志插件关闭并重新打开其日志文件以刷新它。（变量值保持不变。）`关`因此，在再次启用它以执行另一次刷新之前，无需显式禁用它。）有关更多信息，请参阅[第6.4.5.5节，“配置审计日志特征”](audit-log-logging-configuration.html).

-   [](<>) [`审核日志格式`](audit-log-reference.html#sysvar_audit_log_format)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志格式=值` |
    | ----- | ------------ |
    | 系统变量 | `[audit_log_format]（audit log reference.html#sysvar_audit_log_format）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 列举 |
    | 默认值 | `新` |
    | 有效值 | `古老的`<br/><br/>`新`<br/><br/>`JSON` |

    审核日志文件格式。允许值为`古老的`（老式XML），`新`（新样式的XML；默认值），以及`JSON`。有关每种格式的详细信息，请参阅[第6.4.5.4节，“审计日志文件格式”](audit-log-file-formats.html).

    笔记

    有关更改日志格式时要考虑的问题的信息，请参见[选择审核日志文件格式](audit-log-logging-configuration.html#audit-log-file-format).

-   [](<>) [`审核日志格式unix时间戳`](audit-log-reference.html#sysvar_audit_log_format_unix_timestamp)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志格式unix时间戳[={OFF | ON}]` |
    | ----- | ------------------------------ |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[audit_log_format_unix_timestamp]（audit log reference.html#sysvar_audit_log_format_unix_timestamp）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    此变量仅适用于JSON格式的审核日志输出。如果这是真的，启用此变量会导致每个日志文件记录包含一个`时间`领域字段值是一个整数，表示UNIX时间戳值，指示生成审核事件的日期和时间。

    在运行时更改此变量的值会导致日志文件旋转，因此对于给定的JSON格式日志文件，文件中的所有记录都包含或不包含`时间`领域

    设置的运行时值[`审核日志格式unix时间戳`](audit-log-reference.html#sysvar_audit_log_format_unix_timestamp)需要[`审计及行政`](privileges-provided.html#priv_audit-admin)特权，除了[`系统变量管理`](privileges-provided.html#priv_system-variables-admin)特权（或不推荐的[`超级的`](privileges-provided.html#priv_super)特权）通常需要设置全局系统变量运行时值。

-   [](<>) [`审计日志包括账户`](audit-log-reference.html#sysvar_audit_log_include_accounts)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志包含帐户=值` |
    | ----- | -------------- |
    | 系统变量 | `[audit_log_include_accounts]（audit log reference.html#sysvar_audit_log_include_accounts）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 一串 |
    | 默认值 | `无效的` |

    笔记

    此变量仅适用于传统模式审核日志筛选（请参阅[第6.4.5.10节，“传统模式审核日志筛选”](audit-log-legacy-filtering.html)).

    应该记录哪些事件的帐户。价值应该是`无效的`或包含一个或多个以逗号分隔的帐户名列表的字符串。有关更多信息，请参阅[第6.4.5.7节，“审核日志过滤”](audit-log-filtering.html).

    修改[`审计日志包括账户`](audit-log-reference.html#sysvar_audit_log_include_accounts)仅影响修改后创建的连接，不影响现有连接。

-   [](<>) [`审核日志最大大小`](audit-log-reference.html#sysvar_audit_log_max_size)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志最大大小=#` |
    | ----- | -------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[audit_log_max_size]（audit log reference.html#sysvar_audit_log_max_size）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `0` |
    | 最小值 | `0` |
    | 最大值（Windows） | `4294967295` |
    | 最大值（其他） | `18446744073709551615` |
    | 单元 | `字节` |
    | 块大小 | `4096` |

    [`审核日志最大大小`](audit-log-reference.html#sysvar_audit_log_max_size)适用于审计日志文件修剪，它仅支持JSON格式的日志文件。它根据组合日志文件大小控制修剪：

    -   值为0（默认值）将禁用基于大小的修剪。没有大小限制。

    -   大于0的值将启用基于大小的修剪。该值是合并后的大小，超过该值，审核日志文件将被删除。

        如果你设定[`审核日志最大大小`](audit-log-reference.html#sysvar_audit_log_max_size)如果值不是4096的倍数，则会将其截断为最接近的倍数。特别是，将其设置为小于4096的值会将其设置为0，并且不会发生基于大小的修剪。

        如果两者都有[`审核日志最大大小`](audit-log-reference.html#sysvar_audit_log_max_size)和[`审核日志旋转大小`](audit-log-reference.html#sysvar_audit_log_rotate_on_size)大于0，[`审核日志最大大小`](audit-log-reference.html#sysvar_audit_log_max_size)应大于[`审核日志旋转大小`](audit-log-reference.html#sysvar_audit_log_rotate_on_size)。否则，将向服务器错误日志中写入警告，因为在这种情况下，基于大小的修剪的“粒度”可能不足以防止每次发生时删除所有或大部分旋转的日志文件。

    笔记

    背景[`审核日志最大大小`](audit-log-reference.html#sysvar_audit_log_max_size)由于修剪算法使用[`审核日志旋转大小`](audit-log-reference.html#sysvar_audit_log_rotate_on_size), [`审核日志最大大小`](audit-log-reference.html#sysvar_audit_log_max_size)和[`审核日志删除秒`](audit-log-reference.html#sysvar_audit_log_prune_seconds)同时。有关详细信息，请参阅[审计日志文件的空间管理](audit-log-logging-configuration.html#audit-log-space-management).

-   [](<>) [`审核日志密码历史记录保存天数`](audit-log-reference.html#sysvar_audit_log_password_history_keep_days)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志密码历史记录保留天数=#` |
    | ----- | -------------------- |
    | 介绍 | 8.0.17 |
    | 系统变量 | `[audit_log_password_history_keep_days]（audit log reference.html#sysvar_audit_log_password_history_keep_days）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `0` |
    | 最小值 | `0` |
    | 最大值 | `4294967295` |

    审计日志插件使用存储在MySQL密钥环中的加密密码实现日志文件加密（请参阅[加密审核日志文件](audit-log-logging-configuration.html#audit-log-file-encryption))该插件还实现了密码历史记录，包括密码存档和过期（删除）。

    当审计日志插件创建一个新的加密密码时，它会将以前的密码（如果存在）存档，以供以后使用。这个[`审核日志密码历史记录保存天数`](audit-log-reference.html#sysvar_audit_log_password_history_keep_days)变量控制自动删除过期的存档密码。其值表示删除存档的审核日志加密密码的天数。默认值0将禁用密码过期：密码保留期为永久。

    在以下情况下会创建新的审核日志加密密码：

    -   在插件初始化期间，如果插件发现日志文件加密已启用，它将检查密钥环是否包含审核日志加密密码。如果没有，插件会自动生成一个随机初始加密密码。

    -   当[`审核日志加密密码设置（）`](audit-log-reference.html#function_audit-log-encryption-password-set)函数来设置特定的密码。

        在每种情况下，插件都会将新密码存储在密钥环中，并使用它来加密新的日志文件。

        在以下情况下，会删除过期的审核日志加密密码：

    -   在插件初始化期间。

    -   当[`审核日志加密密码设置（）`](audit-log-reference.html#function_audit-log-encryption-password-set)函数被调用。

    -   当[`审核日志密码历史记录保存天数`](audit-log-reference.html#sysvar_audit_log_password_history_keep_days)从其当前值更改为大于0的值。运行时值会发生更改[`设置`](set-variable.html)使用`全球的`或`坚持`关键字，但不是`只有你`关键词。`只有你`将变量设置写入`mysqld自动。cnf`，但对运行时值没有影响。

         [](<>)[](<>)

        当发生密码删除时，的当前值[`审核日志密码历史记录保存天数`](audit-log-reference.html#sysvar_audit_log_password_history_keep_days)确定要删除的密码：

    -   如果值为0，则插件不会删除任何密码。

    -   如果值为*`N`* >0时，该插件删除的密码超过*`N`*好几天了。

    笔记

    注意不要让读取存档的加密日志文件所需的旧密码过期。

    如果您通常禁用密码过期功能（即，[`审核日志密码历史记录保存天数`](audit-log-reference.html#sysvar_audit_log_password_history_keep_days)值为0），可以通过临时为变量指定大于零的值来执行按需清理操作。例如，要使超过365天的密码过期，请执行以下操作：

    ```
    SET GLOBAL audit_log_password_history_keep_days = 365;
    SET GLOBAL audit_log_password_history_keep_days = 0;
    ```

    设置的运行时值[`审核日志密码历史记录保存天数`](audit-log-reference.html#sysvar_audit_log_password_history_keep_days)需要[`审计及行政`](privileges-provided.html#priv_audit-admin)特权，除了[`系统变量管理`](privileges-provided.html#priv_system-variables-admin)特权（或不推荐的[`超级的`](privileges-provided.html#priv_super)特权）通常需要设置全局系统变量运行时值。

-   [](<>) [`审核日志策略`](audit-log-reference.html#sysvar_audit_log_policy)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志策略=值` |
    | ----- | ------------ |
    | 系统变量 | `[audit_log_policy]（audit log reference.html#sysvar_audit_log_policy）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 列举 |
    | 默认值 | `全部的` |
    | 有效值 | `全部的`<br/><br/>`登录`<br/><br/>`询问`<br/><br/>`没有一个` |

    笔记

    此变量仅适用于传统模式审核日志筛选（请参阅[第6.4.5.10节，“传统模式审核日志筛选”](audit-log-legacy-filtering.html)).

    控制审核日志插件如何将事件写入其日志文件的策略。下表显示了允许的值。

    | 价值 | 描述 |
    | --- | --- |
    | `全部的` | 记录所有事件 |
    | `登录` | 只记录登录事件 |
    | `询问` | 只记录查询事件 |
    | `没有一个` | 不记录任何内容（禁用审核流） |

    [`审核日志策略`](audit-log-reference.html#sysvar_audit_log_policy)只能在服务器启动时设置。在运行时，它是一个只读变量。另外两个系统变量，[`审核日志连接策略`](audit-log-reference.html#sysvar_audit_log_connection_policy)和[`审计日志声明政策`](audit-log-reference.html#sysvar_audit_log_statement_policy)，提供对日志策略的更好控制，可以在启动或运行时设置。如果你使用[`审核日志策略`](audit-log-reference.html#sysvar_audit_log_policy)在启动时，服务器使用其值来设置这些变量，而不是其他两个变量。有关政策变量及其相互作用的更多信息，请参阅[第6.4.5.5节，“配置审计日志特征”](audit-log-logging-configuration.html).

-   [](<>) [`审核日志删除秒`](audit-log-reference.html#sysvar_audit_log_prune_seconds)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志删除秒数=#` |
    | ----- | -------------- |
    | 介绍 | 8.0.24 |
    | 系统变量 | `[audit_log_prune_seconds]（audit log reference.html#sysvar_audit_log_prune_seconds）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `0` |
    | 最小值 | `0` |
    | 最大值（Windows） | `4294967295` |
    | 最大值（其他） | `18446744073709551615` |
    | 单元 | `字节` |

    [`审核日志删除秒`](audit-log-reference.html#sysvar_audit_log_prune_seconds)适用于审计日志文件修剪，它仅支持JSON格式的日志文件。它根据日志文件的使用期限控制修剪：

    -   值为0（默认值）将禁用基于年龄的修剪。没有年龄限制。

    -   大于0的值将启用基于年龄的修剪。该值是审核日志文件被删除后的秒数。

    笔记

    背景[`审核日志删除秒`](audit-log-reference.html#sysvar_audit_log_prune_seconds)由于修剪算法使用[`审核日志旋转大小`](audit-log-reference.html#sysvar_audit_log_rotate_on_size), [`审核日志最大大小`](audit-log-reference.html#sysvar_audit_log_max_size)和[`审核日志删除秒`](audit-log-reference.html#sysvar_audit_log_prune_seconds)同时。有关详细信息，请参阅[审计日志文件的空间管理](audit-log-logging-configuration.html#audit-log-space-management).

-   [](<>) [`审核日志读取缓冲区大小`](audit-log-reference.html#sysvar_audit_log_read_buffer_size)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志读取缓冲区大小=#` |
    | ----- | ----------------- |
    | 系统变量 | `[audit_log_read_buffer_size]（audit log reference.html#sysvar_audit_log_read_buffer_size）` |
    | 范围(≥ 8.0.12) | 全球会议 |
    | 范围（8.0.11） | 全球的 |
    | 动态的(≥ 8.0.12) | 对 |
    | 动态（8.0.11） | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值(≥ 8.0.12) | `32768` |
    | 默认值（8.0.11） | `1048576` |
    | 最小值(≥ 8.0.12) | `32768` |
    | 最小值（8.0.11） | `1024` |
    | 最大值 | `4194304` |

    从审核日志文件读取的缓冲区大小，以字节为单位。这个[`审核日志读取（）`](audit-log-reference.html#function_audit-log-read)函数读取的字节数不超过这么多。仅JSON日志格式支持读取日志文件。有关更多信息，请参阅[第6.4.5.6节，“读取审核日志文件”](audit-log-file-reading.html).

    从MySQL 8.0.12开始，这个变量的默认值为32KB，可以在运行时设置。每个客户端应将其会话值设置为[`审核日志读取缓冲区大小`](audit-log-reference.html#sysvar_audit_log_read_buffer_size)适合其使用[`审核日志读取（）`](audit-log-reference.html#function_audit-log-read).在MySQL 8.0.12之前，[`审核日志读取缓冲区大小`](audit-log-reference.html#sysvar_audit_log_read_buffer_size)默认为1MB，影响所有客户端，只能在服务器启动时更改。

-   [](<>) [`审核日志旋转大小`](audit-log-reference.html#sysvar_audit_log_rotate_on_size)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志根据大小进行轮换=#` |
    | ----- | ------------------ |
    | 系统变量 | `[audit_log_rotate_on_size]（audit log reference.html#sysvar_audit_log_rotate_on_size）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `0` |
    | 最小值 | `0` |
    | 最大值 | `18446744073709551615` |
    | 单元 | `字节` |
    | 块大小 | `4096` |

    如果[`审核日志旋转大小`](audit-log-reference.html#sysvar_audit_log_rotate_on_size)为0时，审核日志插件不会执行基于大小的日志文件自动旋转。如果要进行旋转，必须手动执行；看见[手动审核日志文件轮换](audit-log-logging-configuration.html#audit-log-manual-rotation).

    如果[`审核日志旋转大小`](audit-log-reference.html#sysvar_audit_log_rotate_on_size)大于0时，会自动进行基于大小的日志文件旋转。每当对日志文件的写入导致其大小超过[`审核日志旋转大小`](audit-log-reference.html#sysvar_audit_log_rotate_on_size)值时，审核日志插件重命名当前日志文件，并使用原始名称打开新的当前日志文件。

    如果你设定[`审核日志旋转大小`](audit-log-reference.html#sysvar_audit_log_rotate_on_size)如果值不是4096的倍数，则会将其截断为最接近的倍数。特别是，如果将其设置为小于4096的值，则会将其设置为0，并且除手动外不会发生旋转。

    笔记

    [`审核日志旋转大小`](audit-log-reference.html#sysvar_audit_log_rotate_on_size)控制是否发生审核日志文件轮换。它也可以与[`审核日志最大大小`](audit-log-reference.html#sysvar_audit_log_max_size)和[`审核日志删除秒`](audit-log-reference.html#sysvar_audit_log_prune_seconds)配置对旋转JSON格式日志文件的修剪。有关详细信息，请参阅[审计日志文件的空间管理](audit-log-logging-configuration.html#audit-log-space-management).

-   [](<>) [`审计日志声明政策`](audit-log-reference.html#sysvar_audit_log_statement_policy)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志语句策略=值` |
    | ----- | -------------- |
    | 系统变量 | `[audit_log_statement_policy]（audit log reference.html#sysvar_audit_log_statement_policy）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 列举 |
    | 默认值 | `全部的` |
    | 有效值 | `全部的`<br/><br/>`错误`<br/><br/>`没有一个` |

    笔记

    此变量仅适用于传统模式审核日志筛选（请参阅[第6.4.5.10节，“传统模式审核日志筛选”](audit-log-legacy-filtering.html)).

    控制审核日志插件如何将语句事件写入其日志文件的策略。下表显示了允许的值。

    | 价值 | 描述 |
    | --- | --- |
    | `全部的` | 记录所有语句事件 |
    | `错误` | 只记录失败的语句事件 |
    | `没有一个` | 不要记录语句事件 |

    笔记

    在服务器启动时，为[`审计日志声明政策`](audit-log-reference.html#sysvar_audit_log_statement_policy)如果[`审核日志策略`](audit-log-reference.html#sysvar_audit_log_policy)还指定了，如中所述[第6.4.5.5节，“配置审计日志特征”](audit-log-logging-configuration.html).

-   [](<>) [`审计日志策略`](audit-log-reference.html#sysvar_audit_log_strategy)

    [](<>)[](<>)

    | 命令行格式 | `--审核日志策略=值` |
    | ----- | ------------ |
    | 系统变量 | `[audit_log_strategy]（audit log reference.html#sysvar_audit_log_strategy）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 列举 |
    | 默认值 | `异步的` |
    | 有效值 | `异步的`<br/><br/>`表演`<br/><br/>`半同步`<br/><br/>`同步的` |

    审核日志插件使用的日志记录方法。这些战略价值是允许的：

    -   `异步的`：异步记录。等待输出缓冲区中的空间。

    -   `表演`：异步记录。丢弃输出缓冲区中空间不足的请求。

    -   `半同步`：同步记录。允许操作系统进行缓存。

    -   `同步的`：同步记录。呼叫`sync（）`每次请求之后。

##### 审核日志状态变量

如果启用了审核日志插件，它将公开几个提供操作信息的状态变量。这些变量可用于遗留模式审计过滤和JSON模式审计过滤。

-   [](<>) [`审核日志当前大小`](audit-log-reference.html#statvar_Audit_log_current_size)

    [](<>)[](<>)

    当前审核日志文件的大小。当事件写入日志时，该值会增加，当日志旋转时，该值会重置为0。

-   [](<>) [`审核日志事件最大丢弃大小`](audit-log-reference.html#statvar_Audit_log_event_max_drop_size)

    [](<>)[](<>)

    性能日志记录模式下最大丢弃事件的大小。有关日志记录模式的说明，请参阅[第6.4.5.5节，“配置审计日志特征”](audit-log-logging-configuration.html).

-   [](<>) [`审核日志事件`](audit-log-reference.html#statvar_Audit_log_events)

    [](<>)[](<>)

    审核日志插件处理的事件数，无论它们是否基于过滤策略写入日志（请参阅[第6.4.5.5节，“配置审计日志特征”](audit-log-logging-configuration.html)).

-   [](<>) [`审核日志事件过滤`](audit-log-reference.html#statvar_Audit_log_events_filtered)

    [](<>)[](<>)

    根据筛选策略筛选（未写入日志）的审核日志插件处理的事件数（请参阅[第6.4.5.5节，“配置审计日志特征”](audit-log-logging-configuration.html)).

-   [](<>) [`审核日志事件丢失`](audit-log-reference.html#statvar_Audit_log_events_lost)

    [](<>)[](<>)

    由于事件大于可用的审核日志缓冲区空间，在性能日志记录模式下丢失的事件数。该值可能有助于评估如何设置[`审核日志缓冲区大小`](audit-log-reference.html#sysvar_audit_log_buffer_size)为性能模式调整缓冲区大小。有关日志记录模式的说明，请参阅[第6.4.5.5节，“配置审计日志特征”](audit-log-logging-configuration.html).

-   [](<>) [`审核日志事件记录`](audit-log-reference.html#statvar_Audit_log_events_written)

    [](<>)[](<>)

    写入审核日志的事件数。

-   [](<>) [`审核日志总大小`](audit-log-reference.html#statvar_Audit_log_total_size)

    [](<>)[](<>)

    写入所有审核日志文件的事件的总大小。不像[`审核日志当前大小`](audit-log-reference.html#statvar_Audit_log_current_size)，价值[`审核日志总大小`](audit-log-reference.html#statvar_Audit_log_total_size)即使原木旋转也会增加。

-   [](<>) [`审核日志写入等待`](audit-log-reference.html#statvar_Audit_log_write_waits)

    [](<>)[](<>)

    在异步日志记录模式下，事件必须在审核日志缓冲区中等待空间的次数。有关日志记录模式的说明，请参阅[第6.4.5.5节，“配置审计日志特征”](audit-log-logging-configuration.html).
