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

时间:2011-03-26 11:21:49

标签: mysql logging

我已经读过Mysql服务器创建了一个日志文件,它记录了所有活动 - 比如何时执行查询和执行什么查询。

有人能告诉我系统中的位置吗?我怎么读呢?

基本上,我需要使用不同的输入备份数据库[两个日期之间的备份]所以我想我需要在这里使用日志文件,这就是我想要这样做的原因......

我认为必须以某种方式保护此日志,因为可能会记录用户名和密码等敏感信息[如果有任何查询需要];它可能是安全的,不容易被人看到吗?

我有系统的root访问权限,如何查看日志?

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

这是我的配置文件:

[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

8 个答案:

答案 0 :(得分:139)

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

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

  • The General Query Log。这是mysqld的一般记录 做(连接,断开连接,查询)

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

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

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

即可

第1步:转到此文件( /etc/mysql/conf.d/mysqld_safe_syslog.cnf )并删除或评论这些行。

step2:转到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

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

service mysql restart

要在运行时启用日志,请登录mysql客户端(mysql -u root -p)并提供:

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

最后,我想在此提及的一件事是我是从博客中读到的。谢谢。它对我有用。

点击here访问博客

答案 1 :(得分:42)

您必须激活mysql中的查询记录。

1.edit /etc/my.cnf

[mysqld]
log=/tmp/mysql.log

2.重新启动计算机或mysqld服务

service mysqld restart

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

4.cat /tmp/mysql.log(您应该看到查询)

答案 2 :(得分:29)

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

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

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

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

mysql -e "SELECT @@GLOBAL.log_error"

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

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

注意:完成后点击 Control - C

启用常规日志后,请尝试:

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

要将mysql与密码访问权限一起使用,请添加-p-pMYPASS参数。为了记住它,您可以在~/.my.cnf中配置它,例如

[client]
user=root
password=root

所以下次还会记住它。

答案 3 :(得分:9)

在我(我安装了LAMP)/etc/mysql/my.cnf文件中,我在[mysqld]部分中找到以下注释行:

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

我必须以超级用户身份打开此文件,终端:

sudo geany /etc/mysql/my.cnf

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

我刚刚取消评论他们&保存文件,然后使用

重新设置mysql
sudo service mysql restart

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

答案 4 :(得分:8)

从MySQL参考手册:

  

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

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

答案 5 :(得分:3)

为了补充loyola的答案,值得一提的是,自MySQL 5.1 log_slow_queries不推荐使用slow-query-log

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

答案 6 :(得分:1)

shell> mysqladmin flush-logs


shell> mv host_name.err-old backup-directory

答案 7 :(得分:1)

除了上面的答案,您还可以将命令行参数传递给mysqld进程以记录选项,而不是手动编辑conf文件。例如,要启用常规日志记录并指定文件:

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

确认上面的其他答案,mysqld --help --verbose为您提供conf文件中的值(因此使用命令行选项运行general-log为FALSE);而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