• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • MySQL审核日志参考

    以下讨论可作为对MySQL企业审核组件的参考:

    • 审核日志表
    • 审核日志功能
    • 审核日志选项和变量参考
    • 审核日志选项和变量
    • 审核日志状态变量

    要安装审核日志表和函数,请使用“安装或卸载MySQL企业审核”中提供的说明。除非安装了这些组件,否则 udit_log插件将在旧版模式下运行。请参见“传统模式审核日志过滤”。

    审核日志表

    MySQL Enterprise Audit使用mysql系统数据库中的表来永久存储过滤器和用户帐户数据。只有具有该数据库特权的用户才能访问这些表。这些表使用InnoDB存储引擎。

    如果缺少这些表,则 udit_log插件将在旧版模式下运行。请参见“传统模式审核日志过滤”。

    udit_log_filter表存储过滤器定义。该表包含以下列:

    • NAME

      过滤器名称。

    • FILTER

      与过滤器名称关联的过滤器定义。定义存储为JSON值。

    udit_log_user表存储用户帐户信息。该表包含以下列:

    • USER

      帐户的用户名部分。对于一个帐户user1@localhostUSER部分是user1

    • HOST

      帐户的主机名部分。对于一个帐户user1@localhostHOST部分是localhost

    • FILTERNAME

      分配给该帐户的过滤器的名称。过滤器名称将帐户与 udit_log_filter表中定义的过滤器相关联。

    审核日志功能

    本节针对每个审核日志用户定义函数(UDF)描述其用途,调用顺序和返回值。有关可在何种条件下调用这些UDF的信息,请参见“MySQL审核日志过滤”。

    每个审核日志UDF返回一个字符串,该字符串指示操作是否成功。OK表示成功。表示失败。ERROR:message

    从MySQL 8.0.19开始,审核日志UDF将字符串参数转换为utf8mb4,字符串返回值是utf8mb4字符串。在MySQL 8.0.19之前,审核日志UDF将字符串参数视为二进制字符串(这意味着它们不区分大小写),而字符串返回值是二进制字符串。

    这些审核日志UDF可用:

    • udit_log_encryption_password_get([keyring_id])

      此功能从MySQL密钥环获取审核日志加密密码,必须启用该密码或发生错误。任何钥匙圈插件都可以使用;有关说明,请参见“ MySQL密钥环”。

      不带任何参数的函数将以二进制字符串的形式检索当前的加密密码。可以提供一个参数来指定要检索的审核日志加密密码。参数必须是当前密码或已归档密码的密钥环ID。

      有关审核日志加密的其他信息,请参阅审核日志文件加密。

      参数:

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

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

      返回值:

      成功的密码字符串(最大766个字节),或者NULL失败的错误字符串。

      例:

      检索当前密码:

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

      要通过ID检索密码,您可以通过查询Performance Schema keyring_keys表来确定存在哪些审核日志密钥环ID :

      mysql> SELECT * FROM performance_schem .keyring_keys
      WHERE KEY_ID LIKE 'audit_log%'
      ORDER BY KEY_ID;
      +-----------------------------	+-----------	+----------------	+
      | KEY_ID                       | KEY_OWNER  | BACKEND_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                                                           |
      +------------------------------------------------------------------	+
      
    • udit_log_encryption_password_set(password)

      将当前的审核日志加密密码设置为该参数,并将密码存储在MySQL密钥环中。从MySQL 8.0.19开始,密码存储为utf8mb4字符串。在MySQL 8.0.19之前,密码以二进制形式存储。

      如果启用了加密,此功能将执行日志文件轮换操作,重命名当前日志文件,并开始使用密码加密的新日志文件。必须启用密钥环,否则会发生错误。任何钥匙圈插件都可以使用;有关说明,请参见“ MySQL密钥环”。

      有关审核日志加密的其他信息,请参阅审核日志文件加密。

      参数:

      password:密码字符串。允许的最大长度为766个字节。

      返回值:

      1表示成功,0表示失败。

      例:

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

      调用任何其他筛选UDF都会立即影响操作审核日志筛选,并更新审核日志表。相反,如果你修改这些表的内容,直接使用语句,例如INSERTUPDATEDELETE,所做的更改不会影响立即过滤。要刷新您的更改并使它们可操作,请致电 udit_log_filter_flush()

      警告

      udit_log_filter_flush()仅应在直接修改审核表后才使用,以强制重新加载所有过滤器。否则,应避免使用此功能。实际上,它是 udit_log使用UNINSTALL PLUGINplus 卸载和重新加载插件的简化版本INSTALL PLUGIN

      udit_log_filter_flush()影响所有当前会话,并将它们与以前的过滤器分离。除非断开并重新连接或执行更改用户操作,否则将不再记录当前会话。

      如果此功能失败,将返回错误消息并禁用审核日志,直到下一次成功调用为止 udit_log_filter_flush()

      参数:

      没有。

      返回值:

      指示操作是否成功的字符串。OK表示成功。表示失败。ERROR:message

      例:

      mysql> SELECT audit_log_filter_flush();
      +--------------------------	+
      | audit_log_filter_flush()  |
      +--------------------------	+
      | OK                        |
      +--------------------------	+
      
    • udit_log_filter_remove_filter(filter_name)

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

      如果将删除的过滤器分配给任何用户帐户,则这些用户将停止过滤(将它们从 udit_log_user表中删除)。过滤终止包括这些用户的任何当前会话:它们与过滤器分离并且不再记录。

      参数:

      • filter_name:指定过滤器名称的字符串。

      返回值:

      指示操作是否成功的字符串。OK表示成功。表示失败。ERROR:message

      例:

      mysql> SELECT audit_log_filter_remove_filter('SomeFilter');
      +----------------------------------------------	+
      | audit_log_filter_remove_filter('SomeFilter')  |
      +----------------------------------------------	+
      | OK                                            |
      +----------------------------------------------	+
      
    • udit_log_filter_remove_user(user_name)

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

      如果名称为%,该函数将删除默认帐户过滤器,该默认帐户过滤器用于没有明确分配过滤器的任何用户帐户。

      参数:

      • user_name:用户帐户名,格式为字符串,或表示默认帐户。user_name@host_name%

      返回值:

      指示操作是否成功的字符串。OK表示成功。表示失败。ERROR:message

      例:

      mysql> SELECT audit_log_filter_remove_user('user1@localhost');
      +-------------------------------------------------	+
      | audit_log_filter_remove_user('user1@localhost')  |
      +-------------------------------------------------	+
      | OK                                               |
      +-------------------------------------------------	+
      
    • udit_log_filter_set_filter(filter_name,definition)

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

      参数:

      • filter_name:指定过滤器名称的字符串。
      • definition:一个JSON值,用于指定过滤器定义。

      返回值:

      指示操作是否成功的字符串。OK表示成功。表示失败。ERROR:message

      例:

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

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

      在特殊情况下,名称%代表默认帐户。该筛选器用于没有明确分配筛选器的任何用户帐户的连接。

      参数:

      • user_name:用户帐户名,格式为字符串,或表示默认帐户。user_name@host_name%
      • filter_name:指定过滤器名称的字符串。

      返回值:

      指示操作是否成功的字符串。OK表示成功。表示失败。ERROR:message

      例:

      mysql> SELECT audit_log_filter_set_user('user1@localhost', 'SomeFilter');
      +------------------------------------------------------------	+
      | audit_log_filter_set_user('user1@localhost', 'SomeFilter')  |
      +------------------------------------------------------------	+
      | OK                                                          |
      +------------------------------------------------------------	+
      
    • udit_log_read([ rg])

      从审核日志中读取事件,并返回JSON包含审核事件数组的二进制字符串。如果审核日志格式不是JSON,则会发生错误。

      返回值中的每个事件都是JSON哈希,除了最后一个数组元素可能是一个值,该值指示没有后续事件可读取。JSONnull

      对于 udit_log_read()会话中的第一个呼叫,请传递一个书签,以指示从何处开始阅读。如果返回的数组的最终值不是一个值,则在刚刚读取的事件之后会有更多事件,可以在不使用书签参数或不使用书签参数的情况下调用它们。不带参数的情况下,读取继续进行下一个未读事件。使用书签参数时,将从书签继续读取。JSONnull udit_log_read()

      如果返回的数组的最终值是一个值,则不再有其他事件需要读取,并且下一次调用必须包含书签参数。JSONnull udit_log_read()

      要获取最近写入的事件的书签,请致电 udit_log_read_bookmark()

      有关审核日志读取功能的其他信息,请参阅《审核日志文件读取》。

      参数:

      rg:可选书签,用包含JSON哈希值的字符串表示,该哈希值指示在何处读取多少内容。以下各项的 rg值有意义(忽略其他项):

      • timestampid:第一个事件的审计日志中的位置读取。这两个项目都必须存在才能完全指定位置。
      • max_array_length:要从日志中读取的最大事件数。如果省略,则默认为读取到日志末尾或读取缓冲区已满,以先到者为准。

      返回值:

      二进制JSON字符串,其中包含成功的审计事件数组,或NULL失败的错误消息数组。

      例:

      mysql> SELECT audit_log_read( udit_log_read_bookmark());
      +-----------------------------------------------------------------------	+
      | audit_log_read(audit_log_read_bookmark())                              |
      +-----------------------------------------------------------------------	+
      | [ {"timestamp":"2019 -10 -03 22:41:24","id":0,"class":"connection", ...  |
      +-----------------------------------------------------------------------	+
      
    • udit_log_read_bookmark()

      返回JSON表示最近写入的审核日志事件的书签的二进制字符串。如果审核日志格式不是JSON,则会发生错误。

      书签是JSON带有timestamp和的散列,id表示项目在审核日志中的位置。它适合传递给 udit_log_read()该功能指示从哪里开始读取。

      有关审核日志读取功能的其他信息,请参阅《审核日志文件读取》。

      参数:

      没有。

      返回值:

      二进制JSON字符串,包含成功的书签或NULL失败的错误。

      例:

      mysql> SELECT audit_log_read_bookmark();
      +-------------------------------------------------	+
      | audit_log_read_bookmark()                        |
      +-------------------------------------------------	+
      | { "timestamp": "2019 -10 -03 21:03:44", "id": 0 }  |
      +-------------------------------------------------	+
      
    审核日志选项和变量参考

    表6.37审核日志选项和变量参考

    名称Cmd线选项文件系统变量状态变量可变范围动态
    审核日志
    udit_log_buffer_sizeGlobal没有
    udit_log_compressionGlobal没有
    udit_log_connection_policyGlobal
    udit_log_current_session没有
    Audit_log_current_sizeGlobal没有
    udit_log_encryptionGlobal没有
    Audit_log_event_max_drop_sizeGlobal没有
    Audit_log_eventsGlobal没有
    Audit_log_events_filteredGlobal没有
    Audit_log_events_lostGlobal没有
    Audit_log_events_书面Global没有
    udit_log_exclude_accountsGlobal
    udit_log_fileGlobal没有
    udit_log_filter_id没有
    udit_log_flushGlobal
    udit_log_formatGlobal没有
    udit_log_include_accountsGlobal
    udit_log_password_history_keep_daysGlobal
    udit_log_policyGlobal没有
    udit_log_read_buffer_size变化变化
    udit_log_rotate_on_sizeGlobal
    udit_log_statement_policyGlobal
    udit_log_strategyGlobal没有
    Audit_log_total_sizeGlobal没有
    Audit_log_write_waitsGlobal没有

    审核日志选项和变量

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

    要配置审核日志插件的激活,请使用以下选项:

    • --audit-log[=value]

      属性
      命令行格式--audit-log[=value]
      类型列举
      默认值ON
      有效值

      ON

      OFF

      FORCE

      FORCE_PLUS_PERMANENT

      此选项控制服务器 udit_log在启动时如何加载插件。这仅当插件已经与以前登记的INSTALL PLUGIN或装有--plugin-load--plugin-load-add。请参见“MySQL企业防火墙”。

      该选项值应为可用于插件加载选项的值之一,如“安装和卸载插件”中所述。例如,--audit-log=FORCE_PLUS_PERMANENT告诉服务器加载插件,并防止在服务器运行时将其删除。

    如果启用了审核日志插件,它将公开几个系统变量,这些变量可控制日志记录:

    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  |
    +-----------------------------	+--------------	+
    

    您可以在服务器启动时设置这些变量中的任何一个,在运行时设置其中一些。请注意那些仅适用于旧模式审核日志过滤的内容。

    • udit_log_buffer_size

      属性
      命令行格式--audit-log-buffer-size=#
      系统变量 udit_log_buffer_size
      范围Global
      动态没有
      SET_VAR提示适用没有
      类型整数
      默认值1048576
      最低值4096
      最大值(64位平台)18446744073709547520
      最大值(32位平台)4294967295

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

    • udit_log_compression

      属性
      命令行格式--audit-log-compression=value
      系统变量 udit_log_compression
      范围Global
      动态没有
      SET_VAR提示适用没有
      类型列举
      默认值NONE
      有效值

      NONE

      GZIP

      审核日志文件的压缩类型。允许值为NONE(不压缩;默认值)和GZIP(GNU Zip压缩)。有关更多信息,请参见审核日志文件压缩。

    • udit_log_connection_policy

      属性
      命令行格式--audit-log-connection-policy=value
      系统变量 udit_log_connection_policy
      范围Global
      动态
      SET_VAR提示适用没有
      类型列举
      默认值ALL
      有效值

      ALL

      ERRORS

      NONE

      注意

      此变量仅适用于旧模式审核日志过滤(请参见“传统模式审核日志过滤”)。

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

      描述
      ALL记录所有连接事件
      ERRORS仅记录失败的连接事件
      NONE不记录连接事件
      注意

      在服务器启动时, udit_log_connection_policy如果 udit_log_policy也指定了任何给定的显式值,则可以将其覆盖,如“审核日志记录配置”中所述。

    • udit_log_current_session

      属性
      系统变量 udit_log_current_session
      范围Global, Session
      动态没有
      SET_VAR提示适用没有
      类型布尔型
      默认值depends on filtering policy

      当前会话是否启用审核日志记录。该变量的会话值是只读的。根据 udit_log_include_accounts udit_log_exclude_accounts变量的值在会话开始时进行设置。审核日志插件使用会话值来确定是否审核该会话的事件。(有一个全局值,但是插件不使用它。)

    • udit_log_encryption

      属性
      命令行格式--audit-log-encryption=value
      系统变量 udit_log_encryption
      范围Global
      动态没有
      SET_VAR提示适用没有
      类型列举
      默认值NONE
      有效值

      NONE

      AES

      审核日志文件的加密类型。允许的值为NONE(不加密;默认值)和AES(AES-256-CBC密码加密)。有关更多信息,请参见审核日志文件加密。

    • udit_log_exclude_accounts

      属性
      命令行格式--audit-log-exclude-accounts=value
      系统变量 udit_log_exclude_accounts
      范围Global
      动态
      SET_VAR提示适用没有
      类型string
      默认值NULL
      注意

      此变量仅适用于旧模式审核日志过滤(请参见“传统模式审核日志过滤”)。

      不应记录事件的帐户。该值应为NULL或包含一个或多个用逗号分隔的帐户名列表的字符串。有关更多信息,请参见“MySQL审核日志过滤”。

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

    • udit_log_file

      属性
      命令行格式--audit-log-file=file_name
      系统变量 udit_log_file
      范围Global
      动态没有
      SET_VAR提示适用没有
      类型文件名
      默认值 udit.log

      审核日志插件向其写入事件的文件的基本名称和后缀。 udit.log不管日志格式如何,默认值为。要使名称后缀与格式相对应,请显式设置名称,选择其他后缀(例如, udit.xml对于XML格式, udit.json对于JSON格式)。

      如果的值 udit_log_file是相对路径名,则插件将相对于数据目录对其进行解释。如果该值是完整路径名,那么插件将按原样使用该值。如果希望将审核文件放在单独的文件系统或目录中,则完整路径名可能很有用。出于安全原因,请将审核日志文件写入只有MySQL服务器和有正当理由参见日志的用户才能访问的目录。

      有关审核日志插件如何解释 udit_log_file值以及在插件初始化和终止时发生的文件重命名规则的详细信息,请参阅审核日志文件名。

      审核日志插件使用包含审核日志文件(由 udit_log_file值确定)的目录作为搜索可读审核日志文件的位置。从这些日志文件和当前文件中,插件将构建一个列表,这些列表将与审核日志书签和读取功能一起使用。请参阅审核日志文件读取。

    • udit_log_filter_id

      属性
      系统变量 udit_log_filter_id
      范围Global, Session
      动态没有
      SET_VAR提示适用没有
      类型整数

      该变量的会话值指示当前会话的审核过滤器的内部维护ID。值为0表示会话未分配过滤器。

    • udit_log_flush

      属性
      系统变量 udit_log_flush
      范围Global
      动态
      SET_VAR提示适用没有
      类型布尔型
      默认值OFF

      当将此变量设置为启用(1或ON)时,审核日志插件将关闭并重新打开其日志文件以刷新它。(该值保持不变,OFF因此您无需在再次启用它再次执行另一个刷新之前就明确禁用它。)启用此变量除非 udit_log_rotate_on_size为0,否则无效。有关更多信息,请参见“MySQL审核日志记录配置”。

    • udit_log_format

      属性
      命令行格式--audit-log-format=value
      系统变量 udit_log_format
      范围Global
      动态没有
      SET_VAR提示适用没有
      类型列举
      默认值NEW
      有效值

      OLD

      NEW

      JSON

      审核日志文件格式。允许的值为OLD(旧样式XML),NEW(新样式XML;默认值)和JSON。有关每种格式的详细信息,请参见“MySQL审核日志文件格式”。

      注意

      有关更改日志格式时要考虑的问题的信息,请参阅审核日志文件格式。

    • udit_log_include_accounts

      属性
      命令行格式--audit-log-include-accounts=value
      系统变量 udit_log_include_accounts
      范围Global
      动态
      SET_VAR提示适用没有
      类型string
      默认值NULL
      注意

      此变量仅适用于旧模式审核日志过滤(请参见“传统模式审核日志过滤”)。

      应记录事件的帐户。该值应为NULL或包含一个或多个用逗号分隔的帐户名列表的字符串。有关更多信息,请参见“MySQL审核日志过滤”。

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

    • udit_log_password_history_keep_days

      属性
      命令行格式--audit-log-password-history-keep-days=#
      介绍了8.0.17
      系统变量 udit_log_password_history_keep_days
      范围Global
      动态
      SET_VAR提示适用没有
      类型整数
      默认值0
      最低值0
      最大值4294967295

      创建新的加密密码后,审核日志插件将存档先前的密码(如果存在)以供以后使用。该 udit_log_password_history_keep_days变量控制自动删除已归档的密码。它的值表示删除已存档审核日志加密密码的天数。缺省值为0,表示禁用密码删除功能。密码保留期限是永远的。

      在以下情况下,将创建新的审核日志加密密码:

      • 在插件初始化期间,如果插件发现启用了日志文件加密,则它将检查密钥环是否包含审核日志加密密码。如果不是,该插件会自动生成一个随机的初始加密密码。
      • udit_log_encryption_password_set()调用该函数以设置特定密码时。

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

      在以下情况下,将清除旧的审核日志加密密码:

      • 在插件初始化期间。
      • udit_log_encryption_password_set()函数被调用。
      • 当的运行时值 udit_log_password_history_keep_days从其当前值更改为大于0的值时。SET使用GLOBALor PERSIST关键字而不使用关键字的语句可能会发生运行时值更改PERSIST_ONLYPERSIST_ONLY将变量设置写入mysqld-auto.cnf,但对运行时值没有影响。

      密码清除发生时,的当前值 udit_log_password_history_keep_days确定要删除的密码:

      • 如果该值N> 0,则该插件会删除已使用超过N几天的密码。
      • 如果值为0,则插件不会删除任何密码。
      注意

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

      如果通常禁用密码过期( udit_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;
      

      除了设置全局系统变量运行时值通常所需的或特权外,设置的运行时值还 udit_log_password_history_keep_days需要AUDIT_ADMIN特权。SYSTEM_VARIABLES_ADMINSUPER

    • udit_log_policy

      属性
      命令行格式--audit-log-policy=value
      系统变量 udit_log_policy
      范围Global
      动态没有
      SET_VAR提示适用没有
      类型列举
      默认值ALL
      有效值

      ALL

      LOGINS

      QUERIES

      NONE

      注意

      此变量仅适用于旧模式审核日志过滤(请参见“传统模式审核日志过滤”)。

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

      描述
      ALL记录所有事件
      LOGINS仅记录登录事件
      QUERIES仅记录查询事件
      NONE不记录任何内容(禁用审核流)

      udit_log_policy只能在服务器启动时设置。在运行时,它是一个只读变量。另外两个系统变量 udit_log_connection_policy udit_log_statement_policy可以更好地控制日志记录策略,可以在启动时或运行时进行设置。如果 udit_log_policy在启动时使用它而不是其他两个变量,则服务器将使用其值来设置这些变量。有关策略变量及其相互作用的更多信息,请参见“MySQL审核日志记录配置”。

    • udit_log_read_buffer_size

      属性
      命令行格式--audit-log-read-buffer-size=#
      系统变量 udit_log_read_buffer_size
      范围(>= 8.0.12)Global, Session
      范围(8.0.11)Global
      动态(>= 8.0.12)
      动态(8.0.11)没有
      SET_VAR提示适用没有
      类型整数
      默认值(>= 8.0.12)32768
      预设值(8.0.11)1048576
      最小值(>= 8.0.12)32768
      最小值(8.0.11)1024
      最大值4194304

      从审核日志文件读取的缓冲区大小,以字节为单位。该 udit_log_read()函数读取的字节数不超过该数量。仅JSON日志格式支持日志文件读取。有关更多信息,请参见审核日志文件阅读。

      从MySQL 8.0.12开始,此变量的默认值为32KB,可以在运行时设置。每个客户端应为其设置 udit_log_read_buffer_size适当的会话值 udit_log_read()。MySQL 8.0.12之前的版本 udit_log_read_buffer_size的默认值为1MB,会影响所有客户端,并且只能在服务器启动时进行更改。

    • udit_log_rotate_on_size

      属性
      命令行格式--audit-log-rotate-on-size=#
      系统变量 udit_log_rotate_on_size
      范围Global
      动态
      SET_VAR提示适用没有
      类型整数
      默认值0

      如果 udit_log_rotate_on_size值为0,则审核日志插件不会执行自动日志文件轮换。而是使用 udit_log_flush关闭并重新打开按需日志。在这种情况下,请在刷新文件之前在服务器外部手动重命名该文件。

      如果该 udit_log_rotate_on_size值大于0,则会自动进行基于大小的日志文件轮换。每当写入日志文件导致其大小超过该 udit_log_rotate_on_size值时,审核日志插件都会关闭当前日志文件,将其重命名,然后打开一个新的日志文件。

      有关审核日志文件轮换的更多信息,请参见审核日志文件空间管理和名称轮换。

      如果将此变量设置为不是4096的倍数的值,它将被截断为最接近的倍数。(因此,将其设置为小于4096的效果是将其设置为0且不进行旋转,除非手动进行。)

    • udit_log_statement_policy

      属性
      命令行格式--audit-log-statement-policy=value
      系统变量 udit_log_statement_policy
      范围Global
      动态
      SET_VAR提示适用没有
      类型列举
      默认值ALL
      有效值

      ALL

      ERRORS

      NONE

      注意

      此变量仅适用于旧模式审核日志过滤(请参见“传统模式审核日志过滤”)。

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

      描述
      ALL记录所有语句事件
      ERRORS仅记录失败的语句事件
      NONE不记录语句事件
      注意

      在服务器启动时, udit_log_statement_policy如果 udit_log_policy也指定了任何给定的显式值,则可以将其覆盖,如“审核日志记录配置”中所述。

    • udit_log_strategy

      属性
      命令行格式--audit-log-strategy=value
      系统变量 udit_log_strategy
      范围Global
      动态没有
      SET_VAR提示适用没有
      类型列举
      默认值ASYNCHRONOUS
      有效值

      ASYNCHRONOUS

      PERFORMANCE

      SEMISYNCHRONOUS

      SYNCHRONOUS

      审核日志插件使用的日志记录方法。允许使用以下策略值:

      • ASYNCHRONOUS:异步记录。等待输出缓冲区中的空间。
      • PERFORMANCE:异步记录。删除输出缓冲区中没有足够空间的请求。
      • SEMISYNCHRONOUS:同步记录。允许操作系统进行缓存。
      • SYNCHRONOUS:同步记录。sync()每次请求后致电。
    审核日志状态变量

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

    • Audit_log_current_size

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

    • Audit_log_event_max_drop_size

      性能日志记录模式下最大丢弃事件的大小。有关日志记录模式的说明,请参见“MySQL审核日志记录配置”。

    • Audit_log_events

      审核日志插件处理的事件数,无论是否基于过滤策略将其写入日志(请参见“MySQL审核日志记录配置”)。

    • Audit_log_events_filtered

      由审计日志插件处理的事件数量,这些事件是根据过滤策略过滤的(未写入日志)(请参见“MySQL审核日志记录配置”)。

    • Audit_log_events_lost

      由于事件大于可用审核日志缓冲区空间,因此在性能日志记录模式下丢失的事件数。该值对于评估如何设置 udit_log_buffer_size性能模式的缓冲区大小可能很有用。有关日志记录模式的说明,请参见“MySQL审核日志记录配置”。

    • Audit_log_events_written

      写入审核日志的事件数。

    • Audit_log_total_size

      写入所有审核日志文件的事件的总大小。与不同Audit_log_current_sizeAudit_log_total_size即使旋转了日志,的值也会增加。

    • Audit_log_write_waits

      在异步日志记录模式下,事件必须等待审核日志缓冲区中的空间的次数。有关日志记录模式的说明,请参见“MySQL审核日志记录配置”。