如何在MySQL中查看日志文件?

我读过Mysql服务器创build一个日志文件,它保存了所有活动的logging – 比如什么时候执行什么查询。

任何人都可以告诉我它在我的系统中存在的位置吗? 我怎么读?

基本上,我需要备份不同的input[两个date之间的备份]数据库,所以我觉得我需要在这里使用日志文件,这就是为什么我想要做到这一点…

我认为这个日志必须以某种方式得到保护,因为可能会logging敏感信息,如用户名和密码[如果有任何查询需要]; 所以可能有保障,不容易被看到?

我有root权限访问系统,我怎样才能看到日志?

当我尝试打开/var/log/mysql.log时,它是空的。

这是我的configuration文件:

[client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] log = /var/log/mysql/mysql.log binlog-do-db=zero user = mysql socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp skip-external-locking bind-address = 127.0.0.1 # # * Fine Tuning # key_buffer = 16M max_allowed_packet = 16M thread_stack = 192K thread_cache_size = 8 general_log_file = /var/log/mysql/mysql.log general_log = 1 

这是一个简单的方法来启用它们。 在mysql中,我们需要经常看到3个日志,这些日志在任何项目开发过程中都是需要的

  • The Error Log 。 它包含有关服务器运行时发生的错误的信息(也包括服务器启动和停止)

  • The General Query Log 。 这是mysqld在做什么的一般logging(连接,断开,查询)

  • The Slow Query Log 。 tt由“慢”SQL语句组成(如其名称所示)。

默认情况下,MYSQL中没有启用日志文件。 所有错误都将显示在系统日志中。(/ var / log / syslog)

要启用它们只需按照以下步骤

第一步:转到这个文件( /etc/mysql/conf.d/mysqld_safe_syslog.cnf )并删除或注释这些行。

第二步:进入mysql conf文件(/etc/mysql/my.cnf)并添加以下几行

要启用错误日志添加以下内容

 [mysqld_safe] log_error=/var/log/mysql/mysql_error.log [mysqld] log_error=/var/log/mysql/mysql_error.log 

启用通用查询日志添加以下内容

 general_log_file = /var/log/mysql/mysql.log general_log = 1 

启用慢查询日志添加以下内容

 log_slow_queries = /var/log/mysql/mysql-slow.log long_query_time = 2 log-queries-not-using-indexes 

第三步:保存文件并使用以下命令重新启动mysql

 service mysql restart 

要在运行时启用日志,请login到mysql客户端(mysql -u root -p)并给出:

 SET GLOBAL general_log = 'ON'; SET GLOBAL slow_query_log = 'ON'; 

最后,我想在这里提到的一件事是我从博客中读到这个 。 谢谢。 这个对我有用。

点击这里访问博客

你必须激活查询日志logging在MySQL中。

1.edit /etc/my.cnf

的[mysqld]
日志= / TMP / mysql.log

重新启动计算机或mysqld服务

服务mysqld重启

3.打开phpmyadmin /任何使用mysql / mysql控制台并运行查询的应用程序

4.cat /tmp/mysql.log(你应该看到这个查询)

MySQL日志由全局variables确定,例如:

  • log_error为错误消息日志;
  • 一般查询日志文件的general_log (如果由general_log启用);
  • 慢查询日志文件的slow_query_log (如果由slow_query_log启用);

要查看设置及其位置,请运行以下shell命令:

 mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log 

要打印错误日志的值,请在terminal中运行此命令:

 mysql -e "SELECT @@GLOBAL.log_error" 

要实时读取错误日志文件的内容,请运行:

 sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error") 

注意:完成后点击ControlC

一般日志启用时,请尝试:

 sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)") 

要使用密码访问mysql ,请添加-p-pMYPASS参数。 为了保持它的记忆,你可以在~/.my.cnfconfiguration它,例如

 [client] user=root password=root 

所以下次会记住。

在我的(我已经安装了LAMP)/ etc / mysql / my.cnf文件中,我发现下面的注释行在[mysqld]部分:

 general_log_file = /var/log/mysql/mysql.log general_log = 1 

我不得不打开这个文件作为超级用户,与terminal:

 sudo geany /etc/mysql/my.cnf 

(我更喜欢使用Geany而不是gedit或VI,这没关系)

我只是取消注释他们和保存文件,然后restatt MySQL

 sudo service mysql restart 

运行几个查询,打开上面的文件(/var/log/mysql/mysql.log)和日志在那里:)

从MySQL参考手册:

默认情况下,所有日志文件都在数据目录中创build。

检查/var/lib/mysql文件夹。

为了补充loyola的回答,值得一提的是,从MySQL 5.1开始, log_slow_queries已被弃用,并被slow-query-log

使用log_slow_queries会导致你的service mysql restartservice mysql start失败

 shell> mysqladmin flush-logs shell> mv host_name.err-old backup-directory 

除了上面的答案之外,您还可以将命令行parameter passing给mysqld进程来logging选项,而不是手动编辑您的conf文件。 例如,要启用通用日志logging并指定一个文件:

 mysqld --general-log --general-log-file=/var/log/mysql.general.log 

确认上面的其他答案, mysqld --help --verbose给你从conf文件中的值(所以用命令行选项general-log运行是假的); 而mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log给出:

 general_log ON general_log_file /var/log/mysql.general.log 

对错误日志使用稍微更紧凑的语法:

 mysqld --general-log --general-log-file=/var/log/mysql.general.log --log-error=/var/log/mysql.error.log