mysql日志文件是空的,尽管我似乎已经设置了所有内容



我正在尝试使用readline 6.2 获取运行在debian-linux-gnu(x86_64)上的mysql服务器Ver 14.14 Distrib 5.5.22的日志文件

基于几个网站,我在/etc/mysql/my.cnf:中取消了这些行的注释

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

在运行mysql之后,我检查了/var/log/mysql/mysql.log是否未创建。一个网站建议运行两个命令:

touch /var/log/mysql/mysql.log
chown mysql:mysql /var/log/mysql/mysql.log

这无济于事:仍然没有日志!文件为空。

更新my.cnf文件后是否重新启动服务器?

请发布:

SELECT @@global.general_log;
SELECT @@global.general_log_file;
SELECT @@global.log_output;

这些是服务器所看到的事实上的变量。您可以动态更改tgem,如下所示:

SET GLOBAL general_log:=1;
SET GLOBAL log_output := 'FILE';

此外,作为最后的手段,尝试:

FLUSH LOGS;

关闭+重新打开日志文件描述符。

我在Ubuntu 14.04上使用MySQL 5.5时遇到了同样的问题。权限和配置正常,但FLUSH LOGS返回

ERROR 1105 (HY000): Unknown error

事实证明,这个问题是由不正确的AppArmor设置引起的。

如果是这种情况,/var/log/syslog文件包含类似的行

<from kernel>: apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/log/mysql/mysql.log" pid=16798 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=115 ouid=115

修复文件/etc/AppArmor.d/usr.sbin.mysqld中的AppArmor配置,然后重新启动AppArmor和MySQL。

最新更新