我已经读过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
答案 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日志由全局变量确定,例如:
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
所以下次还会记住它。
答案 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,这没关系)
我刚刚取消评论他们&保存文件,然后使用
重新设置mysqlsudo 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 restart
或service 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