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

如何在MySQL中查看日志文件?,mysql,logging,Mysql,Logging,我读到Mysql服务器创建了一个日志文件,它在其中保存了所有活动的记录,比如何时执行查询以及执行什么查询 有人能告诉我它在我的系统中的位置吗?我怎么读呢 基本上,我需要用不同的输入来备份数据库[两个日期之间的备份],所以我认为我需要在这里使用日志文件,这就是为什么我要这么做 我认为必须以某种方式保护此日志,因为可能会记录诸如用户名和密码之类的敏感信息[如果任何查询需要此信息];那么,它是安全的,不容易被看到吗 我拥有系统的root访问权限,如何查看日志 当我试图打开/var/log/mysql.

我读到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

您必须在mysql中激活查询日志记录

  • 编辑/etc/my.cnf

    [mysqld] log=/tmp/mysql.log [mysqld] log=/tmp/mysql.log
  • 重新启动计算机或mysqld服务

    service mysqld restart 重启
  • 打开phpmyadmin/任何使用mysql/mysql控制台的应用程序并运行查询

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


  • 从MySQL参考手册:

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

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

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

    general_log_file        = /var/log/mysql/mysql.log
    general_log             = 1
    
    我必须以超级用户身份打开此文件,终端:

    sudo geany /etc/mysql/my.cnf
    
    mysql -e "SELECT @@GLOBAL.log_error"
    
    (我更喜欢使用Geany而不是gedit或VI,这没关系)

    我只是取消了它们的注释&保存文件,然后用

    sudo service MySQL restart
    

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

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

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

    • 常规查询日志
      。这是mysqld的一般记录 执行(连接、断开连接、查询)

    • 慢速查询日志
      。由“慢”SQL语句组成(如 由其名称表示)

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

    要启用它们,只需执行以下步骤:

    步骤1:转到该文件(/etc/mysql/conf.d/mysqld\u safe\u syslog.cnf)并删除或注释这些行

    步骤2:转到mysql配置文件(
    /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
    
    要启用慢速查询日志,请添加以下内容

    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
    
    步骤3:保存文件并使用以下命令重新启动mysql

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

    SET GLOBAL general_log = 'ON';
    SET GLOBAL slow_query_log = 'ON';
    
    最后,我想在这里提到的一件事是,我从一个博客上读到了这篇文章。谢谢它对我有用


    单击访问博客

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

    shell> mysqladmin flush-logs
    
    
    shell> mv host_name.err-old backup-directory
    
    • 用于错误消息日志
    • 对于常规查询日志文件(如果由
      general_log
      启用)
    • 对于慢速查询日志文件(如果通过
      slow\u query\u log
      启用)
    要查看设置及其位置,请运行以下shell命令:

    mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log
    
    要打印错误日志的值,请在终端中运行以下命令:

    sudo geany /etc/mysql/my.cnf
    
    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
    

    因此,它将在下一次被记住。

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

    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
    给出了:

    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
    
    为了补充他的回答,值得一提的是,从MySQL 5.1开始,
    log\u slow\u querys
    已被弃用,并被
    slow query log


    使用
    log\u slow\u查询
    将导致您的
    服务mysql重启
    服务mysql重启
    失败

    ,但我无法打开mysql文件夹。我认为日志文件的路径是/var/log/mysql/mysql.log,但我无法打开它,我该怎么办?我如何使自己成为root用户,我认为我是所有者,我安装服务器,我设置密码,所以我应该是所有者,但它仍然为我锁定,我如何打开它?我将cd强制放入这个目录(我必须创建root用户,我后来删除了它),但是当我看到这些文件时,我认为它们是加密的:)所以我认为这不是一个好方法。使用
    sudo-s
    然后尝试转到mysql文件夹。mysql手册中充满了许多不一致的地方,无论哪种情况,windows上都没有这样的目录。没关系,只要确保在dbinvalid路径上运行查询即可。你有/etc/my.cnf应该是/etc/mysql/my.cnfI认为比你“忘记”写一些东西。第1步不完整,“博客”链接丢失。嗨,@Athafoud,请现在找到链接。链接的博客文章提到只有在启用错误日志时才修改
    /etc/mysql/conf.d/mysqld\u safe\u syslog.cnf
    。然而,这个答案目前写的是se