如何记录MySQL查询?

如何记录MySQL查询?,mysql,logging,Mysql,Logging,是否可以记录所有执行的查询?我在看一个被许多不同应用程序访问的数据库。其中之一是以不应该的方式修改表的值。我正在试图找出哪个应用程序是罪魁祸首。如果我能够捕获在该表上执行的所有查询以及在什么时候执行,这将对我有很大帮助 非常感谢您的帮助。据我所知,MySQL目前没有内置审计功能。从生成查询的应用程序中记录查询,或嗅探到服务器的连接。在.ini配置中添加此行 log=allqueries.log 您将需要重新启动mysql解决问题的一个可能的方法是在有问题的表上使用更新触发器。在对表进行任何更新

是否可以记录所有执行的查询?我在看一个被许多不同应用程序访问的数据库。其中之一是以不应该的方式修改表的值。我正在试图找出哪个应用程序是罪魁祸首。如果我能够捕获在该表上执行的所有查询以及在什么时候执行,这将对我有很大帮助


非常感谢您的帮助。

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

在.ini配置中添加此行

log=allqueries.log

您将需要重新启动mysql

解决问题的一个可能的方法是在有问题的表上使用更新触发器。在对表进行任何更新时都会触发触发器,并且可以写入触发器,这样当它满足某些条件(所讨论的值已更改)时,就会执行一个操作(可能会写入临时表,即进行更改的SQL语句)。有关更多信息,我建议查看。

。我只建议您在没有很多并发用户的测试/开发数据库上这样做,因为生成的输出量是巨大的。不过,我不确定它是否记录了时间戳

如果没有,在unix/linux设置中,我会说编写一个简单的脚本,从stdin中读取行,并在读取时打印带有当前时间戳的行,并在日志文件中添加tail-f,这样您就可以添加自己的时间戳。

或者使用
--log[=文件名]
在mysqld上切换命令行,或编辑/创建包含以下内容的
my.cnf

[mysqld]
log=/tmp/mysql.log
详细解释。

请看这里:
您正在查找一般查询日志:

请在您的否决票中留下评论。我的答案怎么了?谢谢。@Sarman:请告诉我们有关此功能的文档。如果它存在,那么我很乐意删除/编辑我的答案。否则,请取消你的否决票。不管是哪种方式,否决票最好伴随着解释。谢谢。不管出于什么原因,我八个月前没有发现的,可能适合放在这里。放置my.cnf的最佳位置是什么?我如何告诉MAMP这个文件在哪里?这样它就会起作用。因为无论我做什么都不会被记录下来。我使用mac和MAMP,就像windows上的wamp一样。