我正在尝试使用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。