ddl如何查询时哪个账号执行的?
看show ddl job里,只有库表语句,执行时间等信息
开启审计了这个
通过审计日志、应用日志、会话跟踪来获取;
还有,查询 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@%]