本文为您介绍如何查看数据库审计日志及相关审计日志列表的字段。
说明:
2023年07月12日发布了新版审计日志页面,审计日志搜索字段“扫描行数”为新增字段,在此日期之前的存量审计日志,此字段数据会显示为“-”,对应下载的文件和 API 展示为“-1”。
审计日志字段“执行时间”在控制台和下载的审计日志文件里的单位统一调整为微秒。
审计日志字段“CPU 时间”在控制台和下载的审计日志文件里的单位统一调整为微秒。
审计日志文件中字段“Timestamp”的单位增加显示毫秒级时间。
搜索审计日志时,对多个搜索项进行分隔的字符由逗号更换为换行符。
开通数据库审计后,天津、台北、深圳地域的实例审计日志文件存储的地域有所不同,对应存储地域请参见下表。
实例地域 | 审计日志存储地域 |
天津 | 北京 |
台北 | 中国香港 |
深圳 | 广州 |
前提条件
查看审计日志
说明:
审计日志展示时间扩展到毫秒,便于对 SQL 进行更精确的排序和问题分析。
1. 登录 MySQL 控制台。
2. 在左侧导航栏选择数据库审计。
3. 在上方选择地域后,在审计实例页,单击审计状态选择已开启选项过滤已开启审计的实例。
4. 在审计实例列表里找到目标实例(也可在搜索框通过资源属性筛选快速查找),在其操作列单击查看审计日志,跳转至审计日志页查看对应日志。
工具列表
在审计实例筛选框,可选择切换已开启审计服务的其他审计实例。
在时间框,默认选择近1小时,可快捷选择其他时间(近3小时、近24小时、近7天),也支持自定义时间段,可查看所选时间段内相关审计日志。
说明:
搜索时间段支持选取存在数据的任意时间段进行搜索,最多展示符合条件的前60000条记录。
在搜索框,选择搜索项(SQL 命令详情、客户端 IP、用户账号、数据库名、表名、SQL 类型、错误码、执行时间(微秒)、锁等待时间(微秒)、IO 等待时间(纳秒)、事务持续时间(微秒)、CPU 时间(微秒)、风险等级、线程 ID、事务 ID、扫描行数、影响行数、返回行数、审计规则等)进行搜索,可查看相关审计结果,多个关键词使用换行符分隔。
搜索项 | 匹配项 | 说明 |
SQL 命令详情 | 包含-或-分词 | 规则说明 输入 SQL 命令详情,多个关键字使用换行符进行分隔。 SQL 命令详情搜索框的匹配项分为三层,一层设置正反向的匹配模式(包含、不包含);二层设置关键词之间的逻辑关系(或、且);三层设置每个关键词的匹配模式(分词、通配)。 注意: SQL 命令详情搜索不区分大小写。 支持“包含”、“不包含”两种正反向匹配模式。 关键词之间支持“或”、“且”两种逻辑匹配,“或”表示不同关键词之间取“并集”关系,“且”表示不同关键词之间取“交集”关系。 每个关键词支持“分词”、“通配”两种匹配模式,“分词”表示 SQL 命令详情中的每个关键词需要精确匹配,“通配”表示 SQL 命令详情中的每个关键词可以模糊匹配。 示例说明 假设 SQL 命令详情为:SELECT * FROM test_db1 join test_db2 LIMIT 1; 在“包含(分词)”搜索模式下,可以通过“SELECT”、“select * from”、“*”、“SELECT * FROM test_db1 join test_db2 LIMIT 1;”、“from Test_DB1”等分词关键词进行搜索,无法通过 “SEL”、“sel”、“test” 等通配关键词进行搜索。 在“包含(通配)”搜索模式下,可以通过“SEL”、“sel”、“test”、“DB”等通配关键词进行搜索。 在“包含(且)” 搜索模式下,多个关键词之间是“且”的关系,即输入“SELECT”、“test_db” 等关词,可以查询到所有包含“SELECT”和“test_db”的 SQL 命令。 在“包含(或)” 搜索模式下,多个关键词之间是“或”的关系,即输入“test_db1”、“test_db2” ,可查询到所有包含“test_db1”或者包含“test_db2”的 SQL 命令。 |
| 包含-且-分词 | |
| 不包含-且-分词 | |
| 包含-或-通配 | |
| 包含-且-通配 | |
| 不包含-且-通配 | |
客户端 IP | 包含
不包含
等于
不等于 | 输入客户端 IP,多个关键字使用换行符进行分隔;IP 地址支持使用 * 作为条件进行筛选。如搜索客户端 IP: 9.223.23.2*,则匹配以9.223.23.2 开头的 IP 地址。 |
用户账号 | 包含
不包含
等于
不等于 | 输入用户账号,多个关键字使用换行符进行分隔。 |
数据库名 | 包含
不包含
等于
不等于 | 输入数据库名,多个关键字使用换行符进行分隔。 说明: 数据库名的搜索不区分大小写。 |
表名 | 等于 不等于 | 输入表名,表名搜索说明如下: 不区分大小写。 搜索格式为 DbName.TableName。 例如:数据库 test_db 中包含表 test_table,若想搜索表 test_table,则需要输入:表名等于 test_db.test_table。 |
SQL 类型 | 等于
不等于 | 下拉选择 SQL 类型(ALTER、CHANGEUSER、CREATE、DELETE、DROP、EXECUTE、INSERT、LOGOUT、OTHER、REPLACE、SELECT、SET、UPDATE),支持多选。 |
错误码 | 等于
不等于 | 输入错误码,多个关键字使用换行符进行分隔。 |
执行时间(微秒) | 区间格式 | 输入执行时间,格式为 M-N,如10-100或20-200。 |
锁等待时间(微秒) | 区间格式 | 输入锁等待时间,格式为 M-N,如10-100或20-200。 |
IO 等待时间(纳秒) | 区间格式 | 输入 IO 等待时间,格式为 M-N,如10-100或20-200。 |
事务持续时间(微秒) | 区间格式 | 输入事务持续时间,格式为 M-N,如10-100或20-200。 |
CPU 时间(微秒) | 区间格式 | 输入 CPU 时间,格式为 M-N,如10-100或20-200。 |
风险等级 | 包含 不包含 | 选择低风险、中风险或高风险,过滤命中规则模板风险等级设置的审计日志。 也支持输入为空,表示过滤历史存量没有风险等级标签的审计日志。 |
线程 ID | 等于 不等于 | 输入线程 ID,多个关键字使用换行符进行分隔。 |
事务 ID | 等于 不等于 | 输入事务 ID,多个关键字使用换行符进行分隔。 说明: |
扫描行数 | 区间格式 | 输入扫描行数,格式为 M-N,如10-100或20-200。 |
影响行数 | 区间格式 | 输入影响行数,格式为 M-N,如10-100或20-200。 |
返回行数 | 区间格式 | 输入返回行数,格式为 M-N,如10-100或20-200。 |
审计规则 | 包含 不包含 | 展示所有某地域的规则模板的模板 ID 和模板名称,您可以根据规则模板过滤出命中该规则模板的审计日志。 支持输入为空,表示过滤历史存量没有审计规则标签的审计日志和没有命中规则的全审计日志。 支持按照规则模板 ID 和规则模板名称对审计规则进行搜索。 支持同时选中多个规则模板。 |
日志列表
返回行数字段代表执行 SQL 返回的具体行数,主要用于对 SELECT 类型 SQL 影响的判断。
审计字段
云数据库 MySQL 的审计日志中支持如下字段。用户可以在审计日志页面单击右上角下载图标,下载完成后单击文件列表的图标,在跳转页面复制下载地址进行下载,即可获取完整的 SQL 审计日志。
注意:
目前日志文件下载仅提供腾讯云内网地址,请通过同一地域的腾讯云服务器进行下载(例如:北京区的数据库实例审计日志请通过北京区的 CVM 下载)。
日志文件有效期为 24 小时,请及时下载。
每一个数据库实例的日志文件不得超过 30 个,请下载后及时删除清理。
若状态显示失败,可能是由于日志过多导致,请缩短时间窗口分批下载。
序号 | 字段名 | 备注 |
1 | 时间 | 记录操作发生的确切时间戳。 |
2 | 风险等级 | 表示该操作的风险级别,分为低风险、中风险、高风险,对于全审计,没有命中审计规则的日志,风险等级会显示为“-”。 |
3 | 客户端 IP | 发起数据库操作的客户端的 IP 地址。 |
4 | 数据库名 | 操作涉及的数据库名称。 |
5 | 表名 | 操作涉及的具体数据表名称(如果有),最多只能记录64个表名。 |
6 | 用户账号 | 执行操作的用户账号。 |
7 | SQL 类型 | SQL 语句的类型,如 SELECT、INSERT、UPDATE、DELETE 等。 |
8 | SQL 命令详情 | 执行的具体 SQL 命令文本。 |
9 | 错误码 | 当执行 SQL 语句遇到错误时,会生成一个错误码。错误码是一个整数,用于标识特定的错误类型,0表示成功。 |
10 | 线程 ID | 每个连接到数据库的客户端都有一个唯一的线程 ID。这个 ID 用于标识哪个客户端执行了特定的操作。 |
11 | 事务 ID | 在支持事务的存储引擎(如 InnoDB)中,每个事务都有一个唯一的事务 ID。这个 ID 用于标识特定的事务。 |
12 | 扫描行数 | 执行查询时,数据库扫描过的行数。这个数字可以帮助您了解查询的效率。 |
13 | 返回行数 | 查询结果返回的行数。这个数字可以帮助您了解查询的结果集大小。 |
14 | 影响行数 | 对数据表执行修改操作(如 INSERT、UPDATE、DELETE)时实际影响的行数。这个数字可以帮助您了解操作的影响范围。 |
15 | 执行时间(微秒) | SQL 语句从开始执行到结束所花费的时间,以微秒为单位。这个数字可以帮助您了解查询的性能。 |
16 | CPU 时间(微秒) | SQL 语句在 CPU 上执行所消耗的时间,以微秒为单位。这个数字可以帮助您了解查询的 CPU 使用情况。 |
17 | 锁等待时间(微秒) | 等待获取数据库锁的时间,以微秒为单位。这个数字可以帮助您了解查询的锁竞争情况。 |
18 | IO 等待时间(纳秒) | 等待 IO 操作完成的时间,以纳秒为单位。这个数字可以帮助您了解查询的 IO 性能。 |
19 | 事务持续时间(微秒) | 事务从开始到提交或回滚所花费的总时间,以微秒为单位。这个数字可以帮助您了解事务的性能。 |
20 | 策略名称 | - |
21 | 审计规则 | 展示该条审计日志所命中的是哪个规则模板,单击对应规则模板后,可展示该规则模板的具体规则详情,包括基本信息、参数设置、修改历史。 历史存量的审计日志,审计规则的值展示为“-”。 没有命中规则的全审计日志,审计规则的值展示为“-”。 |
SQL 语句类型与 SQL 语句映射对象关系
序号 | SQL 语句类型 | SQL 语句映射对象 |
0 | OTHER | 除下述 SQL 语句类型外的所有 SQL 语句类型。 |
1 | SELECT | SQLCOM_SELECT |
2 | INSERT | SQLCOM_INSERT,SQLCOM_INSERT_SELECT |
3 | UPDATE | SQLCOM_UPDATE,SQLCOM_UPDATE_MULTI |
4 | DELETE | SQLCOM_DELETE,SQLCOM_DELETE_MULTI,SQLCOM_TRUNCATE |
5 | CREATE | SQLCOM_CREATE_TABLE,SQLCOM_CREATE_INDEX,SQLCOM_CREATE_DB,SQLCOM_CREATE_FUNCTION,SQLCOM_CREATE_USER,SQLCOM_CREATE_PROCEDURE,SQLCOM_CREATE_SPFUNCTION,SQLCOM_CREATE_VIEW,SQLCOM_CREATE_TRIGGER,SQLCOM_CREATE_SERVER,SQLCOM_CREATE_EVENT,SQLCOM_CREATE_ROLE,SQLCOM_CREATE_RESOURCE_GROUP,SQLCOM_CREATE_SRS |
6 | DROP | SQLCOM_DROP_TABLE,SQLCOM_DROP_INDEX,SQLCOM_DROP_DB,SQLCOM_DROP_FUNCTION,SQLCOM_DROP_USER,SQLCOM_DROP_PROCEDURE,SQLCOM_DROP_VIEW,SQLCOM_DROP_TRIGGER,SQLCOM_DROP_SERVER,SQLCOM_DROP_EVENT,SQLCOM_DROP_ROLE,SQLCOM_DROP_RESOURCE_GROUP,SQLCOM_DROP_SRS |
7 | ALTER | SQLCOM_ALTER_TABLE,SQLCOM_ALTER_DB,SQLCOM_ALTER_PROCEDURE,SQLCOM_ALTER_FUNCTION,SQLCOM_ALTER_TABLESPACE,SQLCOM_ALTER_SERVER,SQLCOM_ALTER_EVENT,SQLCOM_ALTER_USER,SQLCOM_ALTER_INSTANCE,SQLCOM_ALTER_USER_DEFAULT_ROLE,SQLCOM_ALTER_RESOURCE_GROUP |
8 | REPLACE | SQLCOM_REPLACE,SQLCOM_REPLACE_SELECT |
9 | SET | SQLCOM_SET_OPTION,SQLCOM_RESET,SQLCOM_SET_PASSWORD,SQLCOM_SET_ROLE,SQLCOM_SET_RESOURCE_GROUP |
10 | EXECUTE | SQLCOM_EXECUTE |
11 | LOGIN | 登入数据库行为,不受审计规则约束,默认记录登录行为。 |
12 | LOGOUT | 登出数据库行为,不受审计规则约束,默认记录退出行为。 |
13 | CHANGEUSER | 更改用户行为,不受审计规则约束,默认记录更改用户行为。 |