如何找出在给定时间范围内在MySQL数据库上执行的所有命令?

时间:2009-08-15 21:58:00

标签: mysql dbconnection

是否有可能找出在给定时间范围内对数据库执行的所有命令?例如,我想知道过去24小时内谁在数据库表上执行了insert命令。

非常感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:1)

对于更改数据的查询,您可以检查二进制日志。但是,我不认为这会让你成为用户:

$ mysqlbinlog /var/log/mysql/mysql-bin.000145
…
# at 3178
#090805  6:25:15 server id 1  end_log_pos 3373  Query   thread_id=2170317       exec_time=0     error_code=0
SET TIMESTAMP=1249467915/*!*/;
UPDATE phpbb3_topics
                SET topic_views = topic_views + 1, topic_last_view_time = 1249467915
                WHERE topic_id = 95847/*!*/;
# at 3373
…

要获取用户,您需要在表上设置触发器并使用这些触发器将审核日志存储在另一个表中。

如果您需要所有查询 - 包括选择 - 还有general query log但由于性能影响和磁盘要求而通常不会启用。

答案 1 :(得分:0)

http://dev.mysql.com/doc/refman/5.0/en/binary-log.html 二进制日志可能会有所帮助。