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


当前回答

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

其他回答

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

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

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

对于mysql>=5.5仅用于慢查询(1秒或更长时间) my.cfg

[mysqld]
slow-query-log = 1
slow-query-log-file = /var/log/mysql/mysql-slow.log
long_query_time = 1
log-queries-not-using-indexes

在Windows上,你可以简单地转到

C:\wamp\bin\mysql\mysql5.1.53\my.ini

在my.ini中插入这一行

general_log_file = c:/wamp/logs/mysql_query_log.log

my.ini文件最终看起来像这样

...
...
...    
socket      = /tmp/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
basedir=c:/wamp/bin/mysql/mysql5.1.53
log = c:/wamp/logs/mysql_query_log.log        #dump query logs in this file
log-error=c:/wamp/logs/mysql.log
datadir=c:/wamp/bin/mysql/mysql5.1.53/data
...
...
...
...

这已经在一个评论中,但值得自己的回答: 无需编辑配置文件:在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;

MySQL 5.6版本有bug。 甚至mysqld显示为:

    Default options are read from the following files in the given order:
C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.ini c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.cnf 

实际设置按以下顺序读取:

    Default options are read from the following files in the given order:
C:\ProgramData\MySQL\MySQL Server 5.6\my.ini C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.ini c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.cnf

检查文件:C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

希望它能帮助到一些人。