ddl如何查询时哪个账号执行的?

ddl如何查询时哪个账号执行的?

看show ddl job里,只有库表语句,执行时间等信息

开启审计了这个

1 个赞

通过审计日志、应用日志、会话跟踪来获取;

还有,查询 INFORMATION_SCHEMA.PROCESSLIST 或者 INFORMATION_SCHEMA.EVENTS 来追踪 DDL 操作以及执行这些操作的账户。

ddl操作如果记录在慢日志中,可以通过information_schema.cluster_slow_query查询到执行的用户

如果执行完成ddl,还可以从哪看到?不开审计

对于执行完成的sql,不开审计,应该是查不到的

这点总有需求,查找xxx删除了表,删除了字段等等

你是要获取当前状态么? 如果是当前的话,直接show processlist就能看到

应该只有开启审计才可以查看到吧

好像只有企业版有这个功能

不用开审计,在 TiDB 日志里就有,你搜索下关键字 ddl.go

开审计可以实现

开审计

通过审计日志、应用日志、会话跟踪来获取。

show processlist 可以看正在执行的ddl的用户;看历史的ddl,只能开审计了

我测试一下

好像只有语句,没有用户相关的信息

[2023/07/18 16:55:52.861 +08:00] [INFO] [session.go:3852] [“CRUCIAL OPERATION”] [conn=984320192580431043] [schemaVersion=93] [cur_db=supeng] [sql=“CREATE TABLE resource_lock(\nid BIGINT(64) AUTO_INCREMENT,\nresource VARCHAR(128),\nip VARCHAR(128),\ncreateTime DATETIME,\nupdateTime DATETIME,\nauthorId BIGINT(64),\nisDeleted BOOLEAN DEFAULT 0,\nPRIMARY KEY (id)\n) ENGINE=InnoDB CHARSET=utf8”] [user=root@%]

1 个赞