MySQL如何开启记录从客户端收到的每条SQL查询语句和提交时间的功能? 我可以在phpmyadmin或NaviCat中这样做吗? 如何分析日志?
当前回答
我的操作系统是Win10, MySQL服务器版本- 5.7
my.ini的路径
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
只需添加到my.ini文件中
general_log_file = C:/ProgramData/MySQL/MySQL Server 5.7/mysql.log
general_log = 1
其他回答
我不得不在某一时刻放弃并重新创建一般日志。在重建过程中,字符集被弄乱了,我最终在日志中出现了以下错误:
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
首先,请记住,这个日志文件在繁忙的服务器上可能会变得非常大。
对于mysql < 5.1.29:
要启用查询日志,请将其放在/etc/my.cnf的[mysqld]部分
log = /path/to/query.log #works for mysql < 5.1.29
另外,从MySQL控制台启用它
SET general_log = 1;
参见http://dev.mysql.com/doc/refman/5.1/en/query-log.html
mysql 5.1.29+
在mysql 5.1.29+中,日志选项已弃用。要指定日志文件并启用日志记录,请在my.cnf的[mysqld]部分中使用这个:
general_log_file = /path/to/query.log
general_log = 1
另外,要从MySQL控制台打开日志记录(还必须以某种方式指定日志文件位置,或者找到默认位置):
SET global general_log = 1;
还要注意,还有其他选项可以只记录慢速查询或不使用索引的查询。
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
希望它能帮助到一些人。
开启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;