我想知道是否可以使用MySQL二进制日志来记录对数据库进行修改的用户的Uid(用户名)。
这是审计目的所必需的。
这可能吗?
答案 0 :(得分:1)
这不是二进制日志的用途 - 二进制日志记录了对数据库所做的所有更改,通常用于复制和恢复。
一个可能的替代方案可能是general query log,我相信它会以某种方式包含用户名。
这都是假设你在谈论实际的连接用户名,而不是你应用程序中的任意“用户”。
以下是我刚从其中一个日志中提取的示例:
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)都是该用户在该连接上的。
答案 1 :(得分:1)
二进制日志主要用于复制目的,除了数据更改外,它们不允许存储任何辅助信息。
如果要存储可查看的日志(因为二进制日志的设计方式只能使用mysql),您需要有额外的表来存储:主表+用户+时间的数据。
您也可以查看Query Log