如何显示在MySQL上执行的最后查询?
你可以启用通用查询日志来进行这种诊断。通常情况下,在生产服务器上不会记录所有的SELECT查询,因为它会影响性能。
编辑你的MySQL配置文件,例如/etc/mysql/my.cnf,在其中查找或添加以下行
[mysqld] log = /var/log/mysql/mysql.log
重新启动mysql以应用该更改,现在你可以
tail -f /var/log/mysql/mysql.log
嘿,预备,你可以观察查询随着进来的。
对于那些拥有 MySQL>=5.1.12 的幸运儿,你可以在运行时全局控制这个选项:
- 执行
SET GLOBAL log_output = 'TABLE';
- 执行
SET GLOBAL general_log = 'ON';
- 查看表格
mysql.general_log
如果你喜欢将它输出到文件而不是表格:
SET GLOBAL log_output = "FILE";
默认值SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
我更喜欢这种方法而不是编辑.cnf文件,因为:
- 你不会编辑my.cnf文件并潜在地永久开启日志
- 你不需要在文件系统中寻找查询日志 - 或者更糟糕的是,分心于需要完美的目的地。
/var/log /var/data/log
/opt /home/mysql_savior/var
- 你不需要重新启动服务器并中断任何当前与之连接的连接。
- 重新启动服务器将使你回到初始状态(日志默认关闭)
欲了解更多信息,请参见
MySQL 5.1 参考手册 - 服务器系统变量 - general_log