MySQL如何开启记录从客户端收到的每条SQL查询语句和提交时间的功能? 我可以在phpmyadmin或NaviCat中这样做吗? 如何分析日志?


当前回答

开启MAC Machine查询日志功能。

打开以下文件:

vi /private/etc/my.cnf

设置'mysqld'节下的查询日志url,如下所示:

[mysqld]

general_log_file=/Users/kumanan/Documents/mysql_query.log

很少有机器不能正确地记录查询,所以你可以从MySQL控制台启用它

mysql> SET global general_log = 1;

其他回答

开启MAC Machine查询日志功能。

打开以下文件:

vi /private/etc/my.cnf

设置'mysqld'节下的查询日志url,如下所示:

[mysqld]

general_log_file=/Users/kumanan/Documents/mysql_query.log

很少有机器不能正确地记录查询,所以你可以从MySQL控制台启用它

mysql> SET global general_log = 1;

在phpMyAdmin 4.0,你去状态>监视器。在那里,您可以启用慢查询日志和常规日志,查看实时监视器,选择图表的一部分,查看相关查询并分析它们。

我不得不在某一时刻放弃并重新创建一般日志。在重建过程中,字符集被弄乱了,我最终在日志中出现了以下错误:

mysql表定义错误。General_log:期望位置1的列'user_host'的类型有字符集'utf8',但发现字符集'latin1'

因此,如果“检查以确保日志记录开启”的标准答案对您不起作用,请检查以确保字段具有正确的字符集。

这已经在一个评论中,但值得自己的回答: 无需编辑配置文件:在mysql中,以root身份执行

SET global general_log_file='/tmp/mysql.log'; 
SET global log_output = 'file';
SET global general_log = on;

之后别忘了关掉:

SET global general_log = off;

可以禁用或启用常规查询日志(记录所有查询)

SET GLOBAL general_log = 1 # (or 0 to disable)