我想知道是否可以使用 MySQL 二进制日志来记录对数据库进行修改的用户的 Uid(用户名)。
这对于审计目的是必要的。
那可能吗?
这不是二进制日志的用途——二进制日志记录对数据库所做的所有更改,通常用于复制和恢复。
一个可能的替代方案可能是通用查询日志,我相信它以某种方式包含用户名。
这一切都假设您正在谈论实际的连接用户名,而不是应用程序中的某个任意“用户”。
这是我刚刚从我的一个日志中提取的一个示例:
111130 13:46:50 130 Connect myusername@localhost on
130 Init DB mydatabase
130 Query SELECT somefields FROM sometable
130 Query SELECT somefields FROM sometable
130 Quit
如您所见,您获得了连接用户名,然后具有该连接 ID(在本例中为 130)的任何内容都是该用户在该连接上的。
二进制日志主要用于复制目的,它们不允许存储除数据更改之外的任何辅助信息。
如果您想存储可查看的日志(因为二进制日志的设计方式只能使用 mysql),您将需要有额外的表来存储:来自主表的数据 + 用户 + 时间。
您也可以查看查询日志