【发布时间】:2011-11-30 13:30:37
【问题描述】:
我想知道是否可以使用 MySQL 二进制日志来记录对数据库进行修改的用户的 Uid(用户名)。
这是审计目的所必需的。
这可能吗?
【问题讨论】:
标签: mysql sql database binary-log
我想知道是否可以使用 MySQL 二进制日志来记录对数据库进行修改的用户的 Uid(用户名)。
这是审计目的所必需的。
这可能吗?
【问题讨论】:
标签: mysql sql database binary-log
这不是二进制日志的用途 - 二进制日志记录对数据库所做的所有更改,通常用于复制和恢复。
一个可能的替代方案可能是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)的任何内容都是该用户在该连接上的。
【讨论】:
二进制日志主要用于复制目的,它们不允许存储除数据更改之外的任何辅助信息。
如果你想存储可查看的日志(因为二进制日志的设计方式只能使用 mysql),你需要有额外的表来存储:来自主表的数据 + 用户 + 时间。
你也可以看看Query Log
【讨论】: