有没有办法监控/记录一个MySQL用户及其运行的查询? 我必须使用以下查询关闭常规日志:
SET GLOBAL general_log = 'OFF';
否则,文本编辑器将无法处理日志文件。我正在寻找一种方法,可以为我想要监视的某些用户打开此日志记录,但似乎不起作用。
是否有其他方法可以知道特定用户在我的数据库上运行的所有内容?
提前感谢。
我可以提出几种建议。
SELECT * FROM information_schema.PROCESSLIST WHERE USER="someuser";
现在取决于您使用什么。编写一个 cronjob(linux)将其存储到文件中,或者编写一个 MySQL 事件将其输入到 mysql 表中。但如果您不熟悉编写命令行 linux 命令,可以使用 mk-query-digest
或甚至可以配置自定义监视工具,如 nagios
,cacti
等。但我个人更喜欢 MONyog,它完美地完成了1和2,并且最重要的是它有一个图形用户界面。
MySQL服务器可以创建多个不同的日志文件,以帮助您查看正在发生的活动。请参见第5.2节“MySQL服务器日志”。但是,您必须定期清理这些文件,以确保日志不会占用过多的磁盘空间。
看一下来自maatkit的mk-query-digest工具,它或许能够做到你想要的类似功能。至少,如果你需要再次启用它,它应该能够帮助你解析一般查询日志: