MySQL如何开启记录从客户端收到的每条SQL查询语句和提交时间的功能? 我可以在phpmyadmin或NaviCat中这样做吗? 如何分析日志?
当前回答
// To see global variable is enabled or not and location of query log
SHOW VARIABLES like 'general%';
// Set query log on
SET GLOBAL general_log = ON;
其他回答
这已经在一个评论中,但值得自己的回答: 无需编辑配置文件:在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;
在phpMyAdmin 4.0,你去状态>监视器。在那里,您可以启用慢查询日志和常规日志,查看实时监视器,选择图表的一部分,查看相关查询并分析它们。
我不得不在某一时刻放弃并重新创建一般日志。在重建过程中,字符集被弄乱了,我最终在日志中出现了以下错误:
mysql表定义错误。General_log:期望位置1的列'user_host'的类型有字符集'utf8',但发现字符集'latin1'
因此,如果“检查以确保日志记录开启”的标准答案对您不起作用,请检查以确保字段具有正确的字符集。
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
希望它能帮助到一些人。
这不是问题的确切答案,因为这个问题已经有了很好的答案。这是附带信息。启用general_log确实降低了MySQL的性能。我意外地将general_log =1留在了一台生产服务器上,并花了几个小时来找出为什么性能不能与其他服务器上的类似设置相比。然后我发现这解释了启用常规日志的影响。http://www.fromdual.com/general_query_log_vs_mysql_performance。
要点在于,不要将general_log=1放在.cnf文件中。相反,在短时间内使用set global general_log =1来记录足够多的日志,以便找到您想要查找的内容,然后将其关闭。
推荐文章
- 警告用户/local/mysql/data目录不属于mysql用户
- 添加一个复合主键
- 如何在SQL Server Management Studio中查看查询历史
- 无法添加或更新子行:外键约束失败
- 如何从本地机器mysqldump远程数据库
- 如何正确地创建复合主键- MYSQL
- Python中带有回溯的日志异常
- 仅在Datetime列上按日期分组
- 在MySQL数据库中存储货币值的最佳数据类型
- 如何自定义'显示进程列表'在mysql?
- MySQL删除一些外键
- 用MySQL LEFT JOIN删除行
- MySQL - length() vs char_length()
- 使用PDO进行行计数
- 在Mac上安装MySQL后,使用ALTER USER语句重置MySQL root密码