如何显示在MySQL上执行的最后查询?

Fer*_*anB 449 mysql logging

是否有任何查询/方式显示在所有服务器上执行的最后查询?

Fli*_*McF 755

对于那些有MySQL> = 5.1.12的人,您可以在运行时全局控制此选项:

  1. 执行 SET GLOBAL log_output = 'TABLE';
  2. 执行 SET GLOBAL general_log = 'ON';
  3. 看看桌子 mysql.general_log

如果您希望输出到文件而不是表:

  1. SET GLOBAL log_output = "FILE"; 默认.
  2. SET GLOBAL general_log_file = "/path/to/your/logfile.log";
  3. SET GLOBAL general_log = 'ON';

我更喜欢这种方法来编辑.cnf文件,因为:

  1. 您没有编辑该my.cnf文件,并可能永久打开日志记录
  2. 你不是在寻找查询日志的文件系统周围钓鱼 - 或者更糟糕的是,由于需要完美的目的地而分散注意力. /var/log /var/data/log /opt /home/mysql_savior/var
  3. 您不必重新启动服务器并中断与其的任何当前连接.
  4. 重新启动服务器会使您离开您的位置(默认情况下,日志仍处于关闭状态)

有关更多信息,请参阅 MySQL 5.1参考手册 - 服务器系统变量 - general_log

  • 记得在完成后清除你的常规日志表:"truncate table mysql.general_log" (6认同)
  • 很棒的UI设计.无论如何,MySQL的日志表实际使用CSV引擎,因此你可以做一切FlipMcF在有关启用登录到general_log表回答说,并有尾-f general_log这样的:尾-f在/ var/lib中/ MySQL的/ mysql的/ general_log.CSV (4认同)
  • 该死的,这个mysql doc甚至没有拍摄表参数。多谢。 (2认同)
  • @Jeach:http://stackoverflow.com/questions/1493722/mysql-command-for-showing-current-configuration-variables (2认同)

Pau*_*xon 42

您可以为该类诊断启用常规查询日志.通常,您不会在生产服务器上记录所有SELECT查询,但这是性能杀手.

编辑你的MySQL配置,例如/etc/mysql/my.cnf - 查找或添加这样的行

[mysqld]
log = /var/log/mysql/mysql.log
Run Code Online (Sandbox Code Playgroud)

现在就可以重新启动mysql以获取更改

tail -f /var/log/mysql/mysql.log
Run Code Online (Sandbox Code Playgroud)

嘿presto,你可以看到他们进来的问题.

  • my.cnf中的general_log_file和general_log (4认同)
  • 较新版本的Mac OS X(至少在Mac OS X上)需要general_log_file和general_log选项,而不仅仅是“log =”。否则,您会收到如下错误: ERROR /usr/local/mysql/bin/mysqld: ambigeous option '--log=/tmp/mysql_queries.log' (log-bin, log_slave_updates) (2认同)

Rok*_*san 16

您可以执行流动的操作来监视mysql查询日志.

打开mys.cn配置文件my.cnf

sudo nano /etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)

[mysqld]标题下搜索以下行并取消注释这些行以启用日志

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1
Run Code Online (Sandbox Code Playgroud)

重新启动mysql服务器以反映更改

sudo service mysql start
Run Code Online (Sandbox Code Playgroud)

使用终端中的以下命令监视mysql服务器日志

tail -f /var/log/mysql/mysql.log
Run Code Online (Sandbox Code Playgroud)


zlo*_*ctb 14

SELECT * FROM  mysql.general_log  WHERE command_type ='Query' LIMIT total;
Run Code Online (Sandbox Code Playgroud)


min*_*s23 9

1)如果启用了一般的mysql日志记录,那么我们可以根据我们在配置中提到的内容检查日志文件或表中的查询.使用以下命令检查启用的内容

mysql> show variables like 'general_log%';
mysql> show variables like 'log_output%';
Run Code Online (Sandbox Code Playgroud)

如果我们需要表中的查询历史记录

Execute SET GLOBAL log_output = 'TABLE';
Execute SET GLOBAL general_log = 'ON';
Run Code Online (Sandbox Code Playgroud)

看一下mysql.general_log表

如果您希望输出到文件:

SET GLOBAL log_output = "FILE"; which is set by default.
SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
Run Code Online (Sandbox Code Playgroud)

2)我们还可以检查.mysql_history文件cat~/.mysql_history中的查询


che*_*vim 5

也许您可以通过查看查询日志来发现这一点。