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