是否可以找出在给定时间范围内对数据库执行的所有命令?例如,我想知道过去 24 小时内谁对数据库表执行了插入命令。
任何帮助将不胜感激。
谢谢。
对于更改数据的查询,您可以检查二进制日志。但是,我认为这不会让您成为用户:
$ 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
…
要获取用户,您需要在表上设置触发器并使用这些触发器将审计日志存储在另一个表中。
如果您需要所有查询(包括选择),还有一般查询日志,但由于性能影响和磁盘要求,它通常不会打开。
http://dev.mysql.com/doc/refman/5.0/en/binary-log.html 二进制日志可能会有所帮助。