【问题标题】:Does MySQL binary log support logging Uid's?MySQL 二进制日志是否支持记录 Uid?
【发布时间】:2011-11-30 13:30:37
【问题描述】:

我想知道是否可以使用 MySQL 二进制日志来记录对数据库进行修改的用户的 Uid(用户名)。

这是审计目的所必需的。

这可能吗?

【问题讨论】:

    标签: mysql sql database binary-log


    【解决方案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)的任何内容都是该用户在该连接上的。

    【讨论】:

    • 我只是在检查 GQL 的一些示例输出,并更新了我的答案,并提供了相关信息的链接。
    • 请注意,GQL 会对性能产生相当大的影响。
    • 这似乎运作良好。是否有任何用于查看/过滤/排序这些查询日志的 GUI 工具?
    • 我不知道。我只将它用于查询故障查找,而不是持久日志记录。如果愿意,您可以将其全部存储在数据库表中而不是文件中,并以这种方式进行处理。
    【解决方案2】:

    二进制日志主要用于复制目的,它们不允许存储除数据更改之外的任何辅助信息。

    如果你想存储可查看的日志(因为二进制日志的设计方式只能使用 mysql),你需要有额外的表来存储:来自主表的数据 + 用户 + 时间。

    你也可以看看Query Log

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 2018-06-06
      • 2021-04-29
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      相关资源
      最近更新 更多