首页 文章

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

提问于
浏览
143

我已经读过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 回答

  • 3

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

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

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

    • The Slow Query Log . 它由"slow" SQL语句组成(如其名称所示) .

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

    要启用它们,请按照以下步骤操作

    step1: 转到此文件( /etc/mysql/conf.d/mysqld_safe_syslog.cnf )并删除或注释这些行 .

    step2: 转到mysql conf文件(/etc/mysql/my.cnf)并添加以下行

    To enable error log add following

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

    To enable general query log add following

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

    To enable Slow Query Log add following

    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';
    

    最后,我想在此提及的一件事是 I read this from a blog . 谢谢 . 这个对我有用 .

    点击here访问博客

  • 1

    您必须激活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(你应该看到查询)

  • 9

    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
    

    所以下次还会记住它 .

  • 42

    在我(我安装了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,没关系)

    我只是取消注释它们并保存文件然后用restatt mysql

    sudo service mysql restart
    

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

  • 1

    从MySQL参考手册:

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

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

  • 25

    为了补充loyola的答案,值得一提的是,自MySQL 5.1 log_slow_queries 被弃用并被 slow-query-log 取代

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

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

    除了上面的答案,您还可以将命令行参数传递给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
    

相关问题