监控一个MySQL用户的查询

9
有没有办法监控/记录一个MySQL用户及其运行的查询? 我必须使用以下查询关闭常规日志:
SET GLOBAL general_log = 'OFF';  

否则,文本编辑器将无法处理日志文件。我正在寻找一种方法,可以为我想要监视的某些用户打开此日志记录,但似乎不起作用。

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

提前感谢。

3个回答

1

我可以提出几种建议。

  1. SELECT * FROM information_schema.PROCESSLIST WHERE USER="someuser"; 现在取决于您使用什么。编写一个 cronjob(linux)将其存储到文件中,或者编写一个 MySQL 事件将其输入到 mysql 表中。
  2. 使用“常规查询日志”并使用类似 linux awk,sed,grep 等工具解析日志文件以获得所需的结果

但如果您不熟悉编写命令行 linux 命令,可以使用 mk-query-digest 或甚至可以配置自定义监视工具,如 nagioscacti 等。但我个人更喜欢 MONyog,它完美地完成了1和2,并且最重要的是它有一个图形用户界面。

enter image description here


0

日志管理详细信息

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


在其他系统上,您必须自己安装一个短脚本,然后从cron(或其等效物)启动以处理日志文件。
你可以通过刷新日志来强制MySQL开始使用新的日志文件。当你发出FLUSH LOGS语句或执行mysqladmin flush-logs、mysqladmin refresh、mysqldump --flush-logs或mysqldump --master-data命令时,日志刷新就会发生。

0

看一下来自maatkit的mk-query-digest工具,它或许能够做到你想要的类似功能。至少,如果你需要再次启用它,它应该能够帮助你解析一般查询日志:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接