以下章节提供了MySQL企业审计元素的参考:
要安装审计日志表和函数,请使用第6.5.2节,“安装或卸载MySQL企业审计”.除非安装了这些对象,否则audit_log
插件在传统模式下运行。看到第6.5.9节,“遗留模式审计日志过滤”.
MySQL企业审计使用的表mysql
持久存储过滤器和用户帐户数据的系统数据库。只有具有该数据库权限的用户才能访问这些表。这些表使用InnoDB
存储引擎。
如果这些表不见了audit_log
插件在传统模式下运行。看到第6.5.9节,“遗留模式审计日志过滤”.
的audit_log_filter
表存储筛选器定义。表中有以下列:
的名字
过滤器的名字。
过滤器
与筛选器名称相关联的筛选器定义。定义存储为
JSON
值。
的audit_log_user
表存储用户帐户信息。表中有以下列:
用户
用户名是帐户的一部分。对于一个帐户
user1@localhost
,用户
部分是user1
.宿主
帐户的主机名部分。对于一个帐户
user1@localhost
,宿主
部分是本地主机
.FILTERNAME
分配给帐户的筛选器的名称。控件中定义的过滤器与帐户关联
audit_log_filter
表格
介绍每个审计日志功能的用途、调用顺序和返回值。有关可以调用这些函数的条件的信息,请参见第6.5.7节,“审计日志过滤”.
每个审计日志函数返回一个字符串,表示操作是否成功。好吧
表示成功。错误:
显示失败。消息
从MySQL 8.0.19开始,审计日志函数将字符串参数转换为utf8mb4
字符串返回值是utf8mb4
字符串。在MySQL 8.0.19之前,审计日志函数将字符串参数视为二进制字符串(这意味着它们不区分字母),字符串返回值是二进制字符串。
控件中调用审计日志函数mysql的值,二进制字符串结果使用十六进制表示法显示——binary-as-hex
.有关该选项的更多信息,请参见mysql—mysql命令行客户端.
审计日志功能如下:
audit_log_encryption_password_get ([
keyring_id
])此函数从MySQL密匙环中获取审计日志加密密码,必须启用该密码,否则将发生错误。任何钥匙环组件或插件都可以使用;说明,请参阅6.4节,“MySQL密匙环”.
如果没有参数,该函数将以二进制字符串的形式检索当前加密密码。可以提供一个参数来指定要检索的审计日志加密密码。该参数必须是当前密码或存档密码的密匙环ID。
有关审计日志加密的其他信息,请参见加密审计日志文件.
参数:
keyring_id
:在MySQL 8.0.17中,这个可选参数表示要检索的密码的密匙环ID。允许的最大长度为766字节。如果省略,该函数将检索当前密码。在MySQL 8.0.17之前,不允许使用参数。该函数总是检索当前密码。
返回值:
成功的密码字符串(最多766字节),或
零
以及失败的错误。例子:
获取当前密码:
mysql >选择audit_log_encryption_password_get ();+-------------------------------------+ | audit_log_encryption_password_get () | +-------------------------------------+ | 秘密 | +-------------------------------------+
要按ID检索密码,可以通过查询Performance Schema确定存在哪些审计日志密匙环ID
keyring_keys
表:mysql> SELECT KEY_ID FROM performance_schemakeyring_keysWHERE 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 (
密码
)将当前审计日志加密密码设置为该参数,并将密码存储在MySQL密匙环中。在MySQL 8.0.19中,密码存储为
utf8mb4
字符串。在MySQL 8.0.19之前,密码是以二进制形式存储的。如果开启了加密功能,该功能将执行日志文件轮转操作,将当前日志文件重命名,并以密码加密的方式开始新的日志文件。必须启用密匙环,否则会发生错误。任何钥匙环组件或插件都可以使用;说明,请参阅6.4节,“MySQL密匙环”.
有关审计日志加密的其他信息,请参见加密审计日志文件.
参数:
密码
:密码字符串。允许的最大长度为766字节。返回值:
1代表成功,0代表失败。
例子:
mysql >选择audit_log_encryption_password_set (密码);+---------------------------------------------+ | audit_log_encryption_password_set (密码) | +---------------------------------------------+ | 1 | +---------------------------------------------+
调用任何其他过滤函数都会立即影响操作审计日志过滤,并更新审计日志表。如果您直接使用语句修改这些表的内容,例如
插入
,更新
,删除
,更改不会立即影响过滤。要清除更改并使其可操作,请调用audit_log_filter_flush ()
.警告audit_log_filter_flush ()
应仅在直接修改审计表后使用,以强制重新加载所有过滤器。否则,应该避免使用此函数。实际上,它是卸载和重新加载的简化版本audit_log
插件与卸载插件
+安装插件
.audit_log_filter_flush ()
影响所有当前会话并将其与以前的筛选器分离。当前会话不再被记录,除非它们断开连接并重新连接,或执行更改用户操作。如果此函数失败,将返回一条错误消息,并禁用审计日志,直到下一次成功调用为止
audit_log_filter_flush ()
.参数:
一个也没有。
返回值:
指示操作是否成功的字符串。
好吧
表示成功。错误:
显示失败。消息
例子:
mysql >选择audit_log_filter_flush ();+--------------------------+ | audit_log_filter_flush () | +--------------------------+ | 好吧 | +--------------------------+
audit_log_filter_remove_filter (
filter_name
)给定筛选器名称,从当前筛选器集中删除该筛选器。筛选器不存在不是错误。
如果将删除的筛选器分配给任何用户帐户,那么这些用户将停止筛选(它们将从
audit_log_user
表)。过滤终止包括这些用户的任何当前会话:他们从过滤器中分离出来,不再登录。参数:
filter_name
:指定筛选器名称的字符串。
返回值:
指示操作是否成功的字符串。
好吧
表示成功。错误:
显示失败。消息
例子:
mysql >选择audit_log_filter_remove_filter(“SomeFilter”);+----------------------------------------------+ | audit_log_filter_remove_filter(“SomeFilter ') | +----------------------------------------------+ | 好吧 | +----------------------------------------------+
audit_log_filter_remove_user (
user_name
)给定用户帐户名,使该用户不再分配给筛选器。如果用户没有分配过滤器,则不会出错。对用户当前会话的过滤不受影响。如果有,则使用默认帐户过滤器过滤用户的新连接,否则不记录日志。
如果名字是
%
,该函数将删除用于没有显式分配过滤器的任何用户帐户的默认帐户过滤器。参数:
user_name
中的字符串形式的用户帐户名
格式,或user_name
@host_name
%
表示默认帐户。
返回值:
指示操作是否成功的字符串。
好吧
表示成功。错误:
显示失败。消息
例子:
mysql >选择audit_log_filter_remove_user(“user1@localhost”);+-------------------------------------------------+ | audit_log_filter_remove_user(“user1@localhost ') | +-------------------------------------------------+ | 好吧 | +-------------------------------------------------+
audit_log_filter_set_filter (
filter_name
,定义
)给定筛选器名称和定义,将筛选器添加到当前筛选器集。如果筛选器已经存在,并且由任何当前会话使用,那么这些会话将从筛选器分离,不再记录日志。出现这种情况是因为新的筛选器定义有一个新的筛选器ID,与以前的ID不同。
参数:
filter_name
:指定筛选器名称的字符串。定义
:一个JSON
值指定筛选器定义。
返回值:
指示操作是否成功的字符串。
好吧
表示成功。错误:
显示失败。消息
例子:
mysql >设置@f = '{“过滤器”:{“日志”:假}}';mysql> SELECT audit_log_filter_set_filter('SomeFilter', @f);+-----------------------------------------------+ | @f audit_log_filter_set_filter(“SomeFilter” ) | +-----------------------------------------------+ | 好吧 | +-----------------------------------------------+
audit_log_filter_set_user (
user_name
,filter_name
)给定用户帐户名称和筛选器名称,将筛选器分配给用户。只能为用户分配一个筛选器,因此如果用户已经分配了筛选器,则会替换该分配。对用户当前会话的过滤不受影响。使用新过滤器过滤新连接。
作为一个特例,名字
%
表示默认帐户。筛选器用于来自没有显式分配筛选器的任何用户帐户的连接。参数:
user_name
中的字符串形式的用户帐户名
格式,或user_name
@host_name
%
表示默认帐户。filter_name
:指定筛选器名称的字符串。
返回值:
指示操作是否成功的字符串。
好吧
表示成功。错误:
显示失败。消息
例子:
mysql> SELECT audit_log_filter_set_user('user1@localhost', 'SomeFilter');+------------------------------------------------------------+ | audit_log_filter_set_user(“user1@localhost”、“SomeFilter ') | +------------------------------------------------------------+ | 好吧 | +------------------------------------------------------------+
读取审计日志并返回
JSON
字符串的结果。如果审计日志格式不一致JSON
,则错误发生。没有争论或
JSON
哈希的论点,audit_log_read ()
从审计日志中读取事件并返回JSON
包含审计事件数组的字符串。哈希参数中的项将影响读取的方式,稍后将对此进行描述。返回数组中的每个元素都是表示为的事件JSON
散列,但最后一个元素可能是JSON
零
值指示没有以下事件可读取。用一个由
JSON
零
值,audit_log_read ()
关闭当前读取序列。有关审计日志读取过程的其他详细信息,请参见第6.5.6节,“读取审计日志文件”.
参数:
要获取最近写入事件的书签,请调用
audit_log_read_bookmark ()
.参数
:参数是可选的。如果省略,函数将从当前位置读取事件。如果存在,参数可以是aJSON
零
值关闭读序列,或aJSON
散列。在哈希参数中,项是可选的,可以控制读取操作的各个方面,如开始读取的位置或读取的事件数量。以下项目是重要的(其他项目被忽略):开始
:审计日志中第一个要读取的事件的位置。位置以时间戳的形式给出,读取从发生在时间戳值上或之后的第一个事件开始。的开始
项具有这种格式,其中价值
是一个文字时间戳值:"start": {"timestamp": "价值"}
的
开始
项在MySQL 8.0.22中是允许的。时间戳
,id
:审计日志中第一个要读取的事件的位置。的时间戳
而且id
项目一起组成了唯一标识特定事件的书签。如果一个audit_log_read ()
参数包含任何一项,它必须同时包含这两项才能完全指定位置,否则将发生错误。max_array_length
:从日志中读取的最大事件数。如果省略此项,则默认读取到日志末尾,或直到读取缓冲区满为止,以先到者为准。
指定起始位置
audit_log_read ()
,传递一个散列参数,该参数包含开始
由…组成的物品或书签时间戳
而且id
物品。如果一个哈希参数包含两个开始
项和书签,则发生错误。如果哈希参数没有指定起始位置,则从当前位置继续读取。
如果时间戳值不包含时间部分,则时间部分为
00:00:00
假定。返回值:
如果调用成功,返回值为
JSON
包含审计事件数组的字符串,或JSON
零
值,如果该参数作为关闭读取序列的参数传递。如果调用失败,返回值为零
出现错误。例子:
mysql >选择audit_log_read (audit_log_read_bookmark ());+-----------------------------------------------------------------------+ | audit_log_read (audit_log_read_bookmark ()) | +-----------------------------------------------------------------------+ | [ {" 时间戳”:“2020-05-18 22:41:24”、“id”:0,“类”:“连接”,…| +-----------------------------------------------------------------------+ mysql >选择audit_log_read(“空”);+------------------------+ | audit_log_read(“空 ') | +------------------------+ | 零 | +------------------------+
注:
在MySQL 8.0.19之前,字符串返回值是二进制的
JSON
字符串。有关将此类值转换为非二进制字符串的信息,请参见第6.5.6节,“读取审计日志文件”.返回一个
JSON
表示最近写入的审计日志事件的书签的字符串。如果审计日志格式不一致JSON
,则错误发生。书签是一个
JSON
散列和时间戳
而且id
唯一标识事件在审计日志中的位置的项。它适合传递给audit_log_read ()
指示该函数开始读取的位置。有关审计日志读取过程的其他详细信息,请参见第6.5.6节,“读取审计日志文件”.
参数:
一个也没有。
返回值:
一个
JSON
包含成功书签的字符串,或零
以及失败的错误。例子:
mysql >选择audit_log_read_bookmark ();+-------------------------------------------------+ | audit_log_read_bookmark () | +-------------------------------------------------+ | { " 时间戳”:“2019-10-03 21:03:44”、“id”:0 } | +-------------------------------------------------+
注:
在MySQL 8.0.19之前,字符串返回值是二进制的
JSON
字符串。有关将此类值转换为非二进制字符串的信息,请参见第6.5.6节,“读取审计日志文件”.
表6.28审计日志选项和变量参考
的名字 | Cmd-Line | 选择文件 | 系统无功 | 状态变量 | Var范围 | 动态 |
---|---|---|---|---|---|---|
审计日志 | 是的 | 是的 | ||||
audit_log_buffer_size | 是的 | 是的 | 是的 | 全球 | 没有 | |
audit_log_compression | 是的 | 是的 | 是的 | 全球 | 没有 | |
audit_log_connection_policy | 是的 | 是的 | 是的 | 全球 | 是的 | |
audit_log_current_session | 是的 | 这两个 | 没有 | |||
Audit_log_current_size | 是的 | 全球 | 没有 | |||
audit_log_encryption | 是的 | 是的 | 是的 | 全球 | 没有 | |
Audit_log_event_max_drop_size | 是的 | 全球 | 没有 | |||
Audit_log_events | 是的 | 全球 | 没有 | |||
Audit_log_events_filtered | 是的 | 全球 | 没有 | |||
Audit_log_events_lost | 是的 | 全球 | 没有 | |||
Audit_log_events_written | 是的 | 全球 | 没有 | |||
audit_log_exclude_accounts | 是的 | 是的 | 是的 | 全球 | 是的 | |
audit_log_file | 是的 | 是的 | 是的 | 全球 | 没有 | |
audit_log_filter_id | 是的 | 这两个 | 没有 | |||
audit_log_flush | 是的 | 全球 | 是的 | |||
audit_log_format | 是的 | 是的 | 是的 | 全球 | 没有 | |
audit_log_include_accounts | 是的 | 是的 | 是的 | 全球 | 是的 | |
audit_log_password_history_keep_days | 是的 | 是的 | 是的 | 全球 | 是的 | |
audit_log_policy | 是的 | 是的 | 是的 | 全球 | 没有 | |
audit_log_prune_seconds | 是的 | 是的 | 是的 | 全球 | 是的 | |
audit_log_read_buffer_size | 是的 | 是的 | 是的 | 不同 | 不同 | |
audit_log_rotate_on_size | 是的 | 是的 | 是的 | 全球 | 是的 | |
audit_log_statement_policy | 是的 | 是的 | 是的 | 全球 | 是的 | |
audit_log_strategy | 是的 | 是的 | 是的 | 全球 | 没有 | |
Audit_log_total_size | 是的 | 全球 | 没有 | |||
Audit_log_write_waits | 是的 | 全球 | 没有 |
介绍配置MySQL企业审计操作的命令选项和系统变量。如果在启动时指定的值不正确,则audit_log
插件可能无法正确初始化,服务器无法加载它。在这种情况下,服务器还可能为其他审计日志设置生成错误消息,因为它无法识别它们。
要配置审计日志插件的激活,使用这个选项:
-
命令行格式 ——审核日志(=价值)
类型 枚举 默认值 在
有效值 在
从
力
FORCE_PLUS_PERMANENT
此选项控制服务器如何加载
audit_log
插件在启动。只有在插件之前注册过的情况下才可用安装插件
或者满载着——plugin-load
或——plugin-load-add
.看到第6.5.2节,“安装或卸载MySQL企业审计”.选项值应该是插件加载选项可用的选项之一,如安装和卸载插件.例如,
——审核日志= FORCE_PLUS_PERMANENT
告诉服务器加载插件,并防止它在服务器运行时被删除。
如果审计日志插件被启用,它会暴露几个系统变量来控制日志:
mysql>显示audit_log%+-----------------------------+--------------+ | Variable_name |值 | +-----------------------------+--------------+ | audit_log_buffer_size | 1048576 | | audit_log_connection_policy所有| | | audit_log_current_session了| | | audit_log_exclude_accounts | | | audit_log_file | audit.log | | audit_log_filter_id | 0 | | audit_log_flush了| | | audit_log_format新| | | audit_log_include_accounts | | | audit_log_policy所有| | | audit_log_rotate_on_size | 0 | | audit_log_statement_policy |所有| | audit_log_strategy |异步的 | +-----------------------------+--------------+
您可以在服务器启动时设置这些变量中的任何一个,在运行时设置其中一些。这些仅用于遗留模式审计日志过滤的日志将被记录下来。
-
命令行格式 ——audit-log-buffer-size = #
系统变量 audit_log_buffer_size
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 整数 默认值 1048576
最小值 4096
最大值(64位平台) 18446744073709547520
最大值(32位平台) 4294967295
块大小 4096
当审计日志插件异步地向日志写入事件时,它在写入事件之前使用一个缓冲区来存储事件内容。这个变量控制缓冲区的大小,以字节为单位。服务器将该值调整为4096的倍数。插件使用一个单独的缓冲区,它在初始化时分配,在终止时删除。只有在日志记录是异步的情况下,插件才会分配这个缓冲区。
-
命令行格式 ——audit-log-compression =值
系统变量 audit_log_compression
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 枚举 默认值 没有一个
有效值 没有一个
GZIP
审计日志文件的压缩类型。允许的值
没有一个
(没有压缩;默认的),GZIP
(GNU Zip压缩)。有关更多信息,请参见压缩审计日志文件. -
命令行格式 ——audit-log-connection-policy =值
系统变量 audit_log_connection_policy
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 枚举 默认值 所有
有效值 所有
错误
没有一个
请注意此变量仅适用于遗留模式审计日志筛选(请参见第6.5.9节,“遗留模式审计日志过滤”).
控制审计日志插件如何将连接事件写入其日志文件的策略。下表显示了允许的值。
价值 描述 所有
记录所有连接事件 错误
只记录失败的连接事件 没有一个
不记录连接事件 请注意在服务器启动时,给出的任何显式值
audit_log_connection_policy
如果audit_log_policy
也指定了,如第6.5.5节,“配置审计日志记录特性”. -
系统变量 audit_log_current_session
范围 全球、会话 动态 没有 SET_VAR
提示应用没有 类型 布尔 默认值 取决于过滤策略
是否为当前会话启用了审计日志记录。该变量的会话值是只读的。属性的值在会话开始时设置
audit_log_include_accounts
而且audit_log_exclude_accounts
系统变量。审计日志插件使用会话值来决定是否对会话的事件进行审计。(有一个全局值,但插件不使用它。) -
命令行格式 ——audit-log-encryption =值
系统变量 audit_log_encryption
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 枚举 默认值 没有一个
有效值 没有一个
AES
审计日志文件的加密类型。允许的值
没有一个
(没有加密;默认的),AES
(aes - 256 - cbc密码加密)。有关更多信息,请参见加密审计日志文件. -
命令行格式 ——audit-log-exclude-accounts =值
系统变量 audit_log_exclude_accounts
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 字符串 默认值 零
请注意此变量仅适用于遗留模式审计日志筛选(请参见第6.5.9节,“遗留模式审计日志过滤”).
不应记录其事件的帐户。值应该是
零
或包含一个或多个以逗号分隔的帐户名称列表的字符串。有关更多信息,请参见第6.5.7节,“审计日志过滤”.修改
audit_log_exclude_accounts
只影响修改后创建的连接,不影响已存在的连接。 -
命令行格式 ——audit-log-file = file_name
系统变量 audit_log_file
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 文件名称 默认值 audit.log
审计日志插件向其写入事件的文件的基本名称和后缀。缺省值为
audit.log
,无论日志格式如何。若要使名称后缀与格式对应,请显式设置名称,并选择不同的后缀(例如,audit.xml
为XML格式,audit.json
JSON格式)。的值
audit_log_file
是一个相对路径名,插件解释它相对于数据目录。如果该值是一个完整的路径名,插件将使用该值。如果希望在单独的文件系统或目录上定位审计文件,那么完整路径名称可能会很有用。出于安全考虑,请将审计日志文件写入一个只有MySQL服务器和有正当理由查看日志的用户才能访问的目录。有关审计日志插件如何解释
audit_log_file
值和在插件初始化和终止时发生的文件重命名规则,参见审计日志文件命名约定.审计日志插件使用包含审计日志文件的目录(由
audit_log_file
值)作为搜索可读审计日志文件的位置。从这些日志文件和当前文件中,插件构造了一个审计日志书签和读取函数使用的日志列表。看到第6.5.6节,“读取审计日志文件”. -
系统变量 audit_log_filter_id
范围 全球、会话 动态 没有 SET_VAR
提示应用没有 类型 整数 此变量的会话值指示当前会话内部维护的审计筛选器ID。值为0意味着会话没有分配过滤器。
-
系统变量 audit_log_flush
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 从
如果
audit_log_rotate_on_size
为0时,禁用自动审计日志文件旋转,只有手动执行时才会发生旋转。在这种情况下,是启用audit_log_flush
通过将其设置为1或在
导致审计日志插件关闭并重新打开其日志文件以刷新它。(变量值保留从
因此,在再次启用它执行另一次刷新之前,不需要显式禁用它。)有关更多信息,请参见第6.5.5节,“配置审计日志记录特性”. -
命令行格式 ——audit-log-format =值
系统变量 audit_log_format
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 枚举 默认值 新
有效值 老
新
JSON
审计日志文件格式。允许的值
老
(老式XML),新
(新型XML;默认),JSON
.每种格式的详细说明请参见第6.5.4节,“审计日志文件格式”.请注意有关更改日志格式时要考虑的问题的信息,请参见选择审计日志文件格式.
audit_log_format_unix_timestamp
命令行格式 ——audit-log-format-unix-timestamp[={|在}]
介绍了 8.0.26 系统变量 audit_log_format_unix_timestamp
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 从
此变量仅适用于json格式的审计日志输出。当为真时,启用此变量将使每个日志文件记录包含一个
时间
字段。该字段值是一个整数,表示UNIX时间戳值,表示审计事件产生的日期和时间。在运行时更改此变量的值将导致日志文件旋转,因此,对于给定的json格式的日志文件,文件中的所有记录要么包含,要么不包含
时间
字段。的运行时值
audit_log_format_unix_timestamp
要求AUDIT_ADMIN
特权,除了SYSTEM_VARIABLES_ADMIN
特权(或已弃用的超级
特权)通常需要设置一个全局系统变量运行时值。-
命令行格式 ——audit-log-include-accounts =值
系统变量 audit_log_include_accounts
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 字符串 默认值 零
请注意此变量仅适用于遗留模式审计日志筛选(请参见第6.5.9节,“遗留模式审计日志过滤”).
应该记录事件的帐户。值应该是
零
或包含一个或多个以逗号分隔的帐户名称列表的字符串。有关更多信息,请参见第6.5.7节,“审计日志过滤”.修改
audit_log_include_accounts
只影响修改后创建的连接,不影响已存在的连接。 -
命令行格式 ——audit-log-max-size = #
介绍了 8.0.26 系统变量 audit_log_max_size
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 0
最小值 0
最大值(Windows) 4294967295
最大值(其他) 18446744073709551615
单位 字节
块大小 4096
audit_log_max_size
与审计日志文件修剪有关,仅支持json格式的日志文件。它根据组合的日志文件大小控制修剪:0(默认值)禁用基于大小的修剪。没有大小限制。
大于0的值将启用基于大小的修剪。该值是审计日志文件需要修剪的合并大小。
如果你设置
audit_log_max_size
对于不是4096倍数的值,将截断为最接近的倍数。特别是,如果将其设置为小于4096的值,则会将其设置为0,并且不会发生基于大小的修剪。如果两个
audit_log_max_size
而且audit_log_rotate_on_size
大于0,audit_log_max_size
应该是7倍以上的价值audit_log_rotate_on_size
.否则,将向服务器错误日志写入警告,因为在这种情况下”粒度”基于大小的修剪可能不足以防止每次发生时删除所有或大部分旋转的日志文件。请注意设置
audit_log_max_size
它本身不足以引起日志文件的修剪,因为修剪算法使用audit_log_rotate_on_size
,audit_log_max_size
,audit_log_prune_seconds
结合。有关详细信息,请参见审计日志文件空间管理. audit_log_password_history_keep_days
命令行格式 ——audit-log-password-history-keep-days = #
介绍了 8.0.17 系统变量 audit_log_password_history_keep_days
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 0
最小值 0
最大值 4294967295
审计日志插件使用存储在MySQL密匙环中的加密密码实现日志文件加密(参见加密审计日志文件).该插件还实现了密码历史记录,包括密码存档和过期(删除)。
当审计日志插件创建一个新的加密密码时,它会归档以前的密码(如果有的话),以便以后使用。的
audit_log_password_history_keep_days
变量控制自动删除过期的存档密码。取值为删除归档审计日志加密密码的天数。默认值为0时禁用密码过期:密码永久保留。在这些情况下创建新的审计日志加密密码:
在插件初始化过程中,如果插件发现日志文件加密已启用,它会检查密匙环中是否包含审计日志加密密码。否则,插件会自动生成一个随机的初始加密密码。
当
audit_log_encryption_password_set ()
函数来设置特定的密码。
在每种情况下,插件都将新密码存储在密匙环中,并使用它来加密新的日志文件。
在以下情况下会删除过期的审计日志加密密码:
在插件初始化期间。
的运行时值
audit_log_password_history_keep_days
从其当前值更改为大于0的值。的运行时值发生更改集
语句使用全球
或坚持
关键字,但不是PERSIST_ONLY
关键字。PERSIST_ONLY
将变量设置写入mysqld-auto.cnf
,但对运行时值没有影响。
当删除密码时,的当前值
audit_log_password_history_keep_days
确定要删除的密码:如果该值为0,则插件不会删除密码。
如果值是
N
> 0,插件删除密码超过N
天。
请注意注意不要使读取归档加密日志文件仍然需要的旧密码过期。
如果您通常禁用密码过期功能(也就是说,
audit_log_password_history_keep_days
值为0),则可以执行按需清理操作,临时为变量赋值大于0。例如,要让超过365天的密码过期,可以这样做:SET GLOBAL audit_log_password_history_keep_days = 365;SET GLOBAL audit_log_password_history_keep_days = 0;
的运行时值
audit_log_password_history_keep_days
要求AUDIT_ADMIN
特权,除了SYSTEM_VARIABLES_ADMIN
特权(或已弃用的超级
特权)通常需要设置一个全局系统变量运行时值。-
命令行格式 ——audit-log-policy =值
系统变量 audit_log_policy
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 枚举 默认值 所有
有效值 所有
登录
查询
没有一个
请注意此变量仅适用于遗留模式审计日志筛选(请参见第6.5.9节,“遗留模式审计日志过滤”).
控制审计日志插件如何将事件写入其日志文件的策略。下表显示了允许的值。
价值 描述 所有
记录所有事件 登录
只记录登录事件 查询
仅记录查询事件 没有一个
不记录任何内容(禁用审核流) audit_log_policy
只能在服务器启动时设置。在运行时,它是一个只读变量。另外两个系统变量,audit_log_connection_policy
而且audit_log_statement_policy
,提供对日志记录策略的更精细的控制,可以在启动时或运行时设置。如果你使用audit_log_policy
在启动时,服务器使用它的值来设置这些变量,而不是其他两个变量。有关策略变量及其交互的更多信息,请参见第6.5.5节,“配置审计日志记录特性”. -
命令行格式 ——audit-log-prune-seconds = #
介绍了 8.0.24 系统变量 audit_log_prune_seconds
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 0
最小值 0
最大值(Windows) 4294967295
最大值(其他) 18446744073709551615
单位 字节
audit_log_prune_seconds
与审计日志文件修剪有关,仅支持json格式的日志文件。它根据日志文件的年龄控制修剪:值0(默认值)禁用基于年龄的修剪。没有年龄限制。
大于0的值将启用基于年龄的修剪。该值是审计日志文件进行修剪的秒数。
请注意设置
audit_log_prune_seconds
它本身不足以引起日志文件的修剪,因为修剪算法使用audit_log_rotate_on_size
,audit_log_max_size
,audit_log_prune_seconds
结合。有关详细信息,请参见审计日志文件空间管理. -
命令行格式 ——audit-log-read-buffer-size = #
系统变量 audit_log_read_buffer_size
范围(≥8.0.12) 全球、会话 范围(8.0.11) 全球 动态(≥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
用于从审计日志文件读取的缓冲区大小,以字节为单位。的
audit_log_read ()
函数读取的字节数不超过这个数。仅JSON日志格式支持日志文件读取。有关更多信息,请参见第6.5.6节,“读取审计日志文件”.在MySQL 8.0.12中,这个变量的默认值是32KB,可以在运行时设置。每个客户端应该将其会话值设置为
audit_log_read_buffer_size
适合于它的使用audit_log_read ()
.在MySQL 8.0.12之前,audit_log_read_buffer_size
默认值为1MB,影响所有客户端,只有在服务器启动时才能更改。 -
命令行格式 ——audit-log-rotate-on-size = #
系统变量 audit_log_rotate_on_size
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 0
最小值 0
最大值 18446744073709551615
单位 字节
块大小 4096
如果
audit_log_rotate_on_size
为0时,审计日志插件不执行基于大小的日志文件自动旋转。如果要发生旋转,必须手动执行;看到手动审计日志文件轮换.如果
audit_log_rotate_on_size
大于0时,将自动进行基于大小的日志文件旋转。每当对日志文件的写入导致其大小超过audit_log_rotate_on_size
值,审计日志插件将重命名当前日志文件,并使用原来的名称打开新的当前日志文件。如果你设置
audit_log_rotate_on_size
对于不是4096倍数的值,将截断为最接近的倍数。特别地,如果将其设置为小于4096的值,则会将其设置为0,并且除了手动之外,不会发生任何旋转。请注意audit_log_rotate_on_size
控制是否发生审计日志文件轮换。它也可以结合使用audit_log_max_size
而且audit_log_prune_seconds
配置已旋转的json格式日志文件的修剪。有关详细信息,请参见审计日志文件空间管理. -
命令行格式 ——audit-log-statement-policy =值
系统变量 audit_log_statement_policy
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 枚举 默认值 所有
有效值 所有
错误
没有一个
请注意此变量仅适用于遗留模式审计日志筛选(请参见第6.5.9节,“遗留模式审计日志过滤”).
控制审计日志插件如何将语句事件写入日志文件的策略。下表显示了允许的值。
价值 描述 所有
记录所有语句事件 错误
只记录失败的语句事件 没有一个
不记录语句事件 请注意在服务器启动时,给出的任何显式值
audit_log_statement_policy
如果audit_log_policy
也指定了,如第6.5.5节,“配置审计日志记录特性”. -
命令行格式 ——audit-log-strategy =值
系统变量 audit_log_strategy
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 枚举 默认值 异步
有效值 异步
性能
SEMISYNCHRONOUS
同步
审计日志插件使用的日志记录方法。这些策略值是允许的:
异步
:异步日志。等待输出缓冲区中的空间。性能
:异步日志。删除输出缓冲区中空间不足的请求。SEMISYNCHRONOUS
:日志同步。操作系统允许缓存。同步
:日志同步。调用同步()
每个请求之后。
如果启用了审计日志插件,它将公开几个提供操作信息的状态变量。这些变量可用于遗留模式审计过滤和JSON模式审计过滤。
当前审计日志文件的大小。当将事件写入日志时,该值增加,当旋转日志时,该值重置为0。
性能日志记录模式下最大丢失事件的大小。有关日志记录模式的描述,请参见第6.5.5节,“配置审计日志记录特性”.
审计日志插件处理的事件数,无论它们是否根据过滤策略写入日志(请参见第6.5.5节,“配置审计日志记录特性”).
审计日志插件根据过滤策略过滤(未写入日志)处理的事件数(请参见第6.5.5节,“配置审计日志记录特性”).
在性能日志记录模式中,由于事件大于可用的审计日志缓冲区空间而丢失的事件数。这个值对于评估如何设置可能很有用
audit_log_buffer_size
为性能模式调整缓冲区大小。有关日志记录模式的描述,请参见第6.5.5节,“配置审计日志记录特性”.写入审计日志的事件数。
写入所有审计日志文件的事件的总大小。不像
Audit_log_current_size
的价值Audit_log_total_size
即使日志被旋转也会增加。在异步日志记录模式下,事件等待审计日志缓冲区空间的次数。有关日志记录模式的描述,请参见第6.5.5节,“配置审计日志记录特性”.