我读到过Mysql服务器创建了一个日志文件,它保存了所有活动的记录——比如什么时候执行查询以及执行什么查询。
有人能告诉我它在我的系统里的位置吗?我怎么读呢?
基本上,我需要备份数据库与不同的输入[备份之间的两个日期],所以我认为我需要使用日志文件在这里,这就是为什么我想这样做…
我认为这个日志必须以某种方式保护,因为用户名和密码等敏感信息可能会被记录[如果任何查询需要这个];所以它可以被固定,不容易被看到吗?
我有系统的根权限,我怎么能看到日志?
当我尝试打开/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
在我的(我已经安装了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),日志就在那里:)
这里有一个简单的方法来启用它们。在mysql中,我们经常需要看到3个日志,这在任何项目开发过程中都是最需要的。
错误日志。它包含有关时发生错误的信息
服务器正在运行(服务器启动和停止)
常规查询日志。这是关于mysqld的一般记录
操作(连接,断开连接,查询)
慢查询日志。Ιt由“慢”SQL语句(如
由其名称指示)。
默认情况下,MYSQL中不启用日志文件。所有错误都将显示在syslog (/var/log/syslog)中。
要启用它们,只需遵循以下步骤:
step1:转到这个文件(/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
步骤3:保存文件并使用以下命令重新启动mysql
service mysql restart
要在运行时启用日志,登录mysql客户端(mysql -u root -p)并给出:
SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';
最后我想在这里提到的一件事是我从一个博客上读到的。谢谢。这对我很管用。
点击这里访问博客
MySQL日志由全局变量决定,例如:
Log_error表示错误消息日志;
General_log_file用于通用查询日志文件(如果通过general_log启用);
Slow_query_log_file用于慢查询日志文件(如果由slow_query_log启用);
要查看设置和它们的位置,运行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
这样下次就能记住了。
除了上面的答案,你可以把命令行参数传递给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
以root用户输入MySQL/MariaDB服务器命令行工具
设置文件路径(您可以将general.log替换为您选择的文件名)。
SET GLOBAL general_log_file='/var/log/mysql/general.log';
设置日志文件格式
SET GLOBAL log_output = 'FILE';
启用服务器常规日志
SET GLOBAL general_log = 'ON';
检查全局配置变量中的配置。
显示变量“general_log%”;
输入exit离开MySQL命令行和Tail您的查询by
-f /var/log/mysql/general.log
or
少/var/log/mysql/general.log
禁用服务器常规日志
SET GLOBAL general_log = 'OFF';