如何在MySQL中查看日志文件?
我读过Mysql服务器创build一个日志文件,它保存了所有活动的logging – 比如什么时候执行什么查询。
任何人都可以告诉我它在我的系统中存在的位置吗? 我怎么读?
基本上,我需要备份不同的input[两个date之间的备份]数据库,所以我觉得我需要在这里使用日志文件,这就是为什么我想要做到这一点…
我认为这个日志必须以某种方式得到保护,因为可能会logging敏感信息,如用户名和密码[如果有任何查询需要]; 所以可能有保障,不容易被看到?
我有root权限访问系统,我怎样才能看到日志?
当我尝试打开/var/log/mysql.log时,它是空的。
这是我的configuration文件:
[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中,我们需要经常看到3个日志,这些日志在任何项目开发过程中都是需要的
-
The Error Log
。 它包含有关服务器运行时发生的错误的信息(也包括服务器启动和停止) -
The General Query Log
。 这是mysqld在做什么的一般logging(连接,断开,查询) -
The Slow Query Log
。 tt由“慢”SQL语句组成(如其名称所示)。
默认情况下,MYSQL中没有启用日志文件。 所有错误都将显示在系统日志中。(/ var / log / syslog)
要启用它们只需按照以下步骤
第一步:转到这个文件( /etc/mysql/conf.d/mysqld_safe_syslog.cnf )并删除或注释这些行。
第二步:进入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
第三步:保存文件并使用以下命令重新启动mysql
service mysql restart
要在运行时启用日志,请login到mysql客户端(mysql -u root -p)并给出:
SET GLOBAL general_log = 'ON'; SET GLOBAL slow_query_log = 'ON';
最后,我想在这里提到的一件事是我从博客中读到这个 。 谢谢。 这个对我有用。
点击这里访问博客
你必须激活查询日志logging在MySQL中。
1.edit /etc/my.cnf
的[mysqld] 日志= / TMP / mysql.log
重新启动计算机或mysqld服务
服务mysqld重启
3.打开phpmyadmin /任何使用mysql / mysql控制台并运行查询的应用程序
4.cat /tmp/mysql.log(你应该看到这个查询)
MySQL日志由全局variables确定,例如:
-
log_error
为错误消息日志; - 一般查询日志文件的
general_log
(如果由general_log
启用); - 慢查询日志文件的
slow_query_log
(如果由slow_query_log
启用);
要查看设置及其位置,请运行以下shell命令:
mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log
要打印错误日志的值,请在terminal中运行此命令:
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
configuration它,例如
[client] user=root password=root
所以下次会记住。
在我的(我已经安装了LAMP)/ etc / mysql / my.cnf文件中,我发现下面的注释行在[mysqld]部分:
general_log_file = /var/log/mysql/mysql.log general_log = 1
我不得不打开这个文件作为超级用户,与terminal:
sudo geany /etc/mysql/my.cnf
(我更喜欢使用Geany而不是gedit或VI,这没关系)
我只是取消注释他们和保存文件,然后restatt MySQL
sudo service mysql restart
运行几个查询,打开上面的文件(/var/log/mysql/mysql.log)和日志在那里:)
从MySQL参考手册:
默认情况下,所有日志文件都在数据目录中创build。
检查/var/lib/mysql
文件夹。
为了补充loyola的回答,值得一提的是,从MySQL 5.1开始, log_slow_queries
已被弃用,并被slow-query-log
使用log_slow_queries
会导致你的service mysql restart
或service mysql start
失败
shell> mysqladmin flush-logs shell> mv host_name.err-old backup-directory
除了上面的答案之外,您还可以将命令行parameter passing给mysqld进程来logging选项,而不是手动编辑您的conf文件。 例如,要启用通用日志logging并指定一个文件:
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
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