如何记录MySQL查询?

时间:2011-01-13 00:36:03

标签: mysql logging

是否可以记录所有执行的查询?我正在查看许多不同应用程序访问的数据库。其中之一是以不应该的方式修改表的值。我想弄清楚哪个应用程序是罪魁祸首。如果我可以捕获在该表上以及在什么时间执行的所有查询,那将对我有所帮助。

非常感谢您的帮助。

6 个答案:

答案 0 :(得分:1)

使用mysqld上的--log[=file_name]命令行开关或编辑/创建包含以下内容的my.cnf

[mysqld]
log=/tmp/mysql.log

this article中完整解释。

答案 1 :(得分:0)

据我所知,MySQL目前没有内置审计功能。从生成它们的应用程序中记录查询,或者嗅探与服务器的连接。

答案 2 :(得分:0)

在.ini配置中

添加此行

log=allqueries.log

你需要重启mysql

答案 3 :(得分:0)

问题的一种可能解决方案是在相关表格上使用更新触发器。触发器将在对表的任何更新时触发,并且可以编写触发器,以便在满足特定条件时(所讨论的值已更改),执行操作(可能写入临时表,SQL语句)这使得变化)。有关详情,建议您查看Trigger Syntax

答案 4 :(得分:0)

You can use the general log in MySQL to achieve this。我建议您在没有很多并发用户的测试/开发数据库上执行此操作,因为生成的输出量 huge 。我不确定它是否记录了时间戳。

如果没有,在unix / linux设置中,我会写一个简单的脚本,从stdin读取行,并在读取时打印当前时间戳的行,并在管道尾部-f上记录日志文件,以便添加自己的时间戳。

答案 5 :(得分:0)