监视MySQL用户的查询

时间:2011-01-03 15:06:04

标签: mysql logging monitor

有没有办法监控/记录MySQL用户以及他/她运行的查询?我不得不使用查询来关闭常规日志:

SET GLOBAL general_log = 'OFF';  

因为否则日志文件不再由文本编辑器处理。我正在寻找一种方法来为我想要监控的一些用户打开这个登录,但它似乎没有那样工作。

有没有其他方法可以知道确定的用户在我的数据库上运行的所有内容?

提前致谢。

3 个答案:

答案 0 :(得分:1)

我可以通过几种方式提出建议。

  1. SELECT * FROM information_schema.PROCESSLIST WHERE USER="someuser";现在取决于你使用的是什么。编写一个cronjob(linux)将其存储到一个文件中或编写一个MySQL事件将其输入到mysql表中。
  2. 使用常规查询日志并使用linux awk,sed,grep等工具来解析日志文件以获得理想的结果
  3. 但如果你不习惯编写命令行linux命令,你可以使用mk-query-digest甚至可以配置自定义监控工具,如nagioscacti等。但我个人更喜欢{{ 3}},它完美地完成了第1点和第2点,最重要的是它有一个GUI。

    enter image description here

答案 1 :(得分:0)

details on logging administration

  

MySQL服务器可以创建许多不同的日志文件,以帮助您查看正在进行的活动。请参见第5.2节“MySQL服务器日志”。但是,您必须定期清理这些文件,以确保日志不会占用太多的磁盘空间


  

在其他系统上,您必须自己安装一个简短的脚本,从cron(或其等价物)开始处理日志文件。


  

您可以通过刷新日志强制MySQL开始使用新的日志文件。发出FLUSH LOGS语句或执行mysqladmin flush-logs,mysqladmin refresh,mysqldump --flush-logs或mysqldump --master-data命令时会发生日志刷新。

答案 2 :(得分:0)

看一下maatkit中的mk-query-digest工具,它可以做一些你想要的东西。至少,它应该能够帮助您解析常规查询日志,如果您必须再次启用它:

http://www.maatkit.org/doc/mk-query-digest.html