常规日志记录在 MySQL 中不起作用

leo*_*str 3 mysql

我在 SF 上看到 MySQL 中有一个选项可以记录所有查询。因此,在我的版本(CentOS 5.2 上的 mysql-server-5.0.45-7.el5)中,这似乎是启用“日志”选项的情况,因此我进行了编辑/etc/my.cnf以添加以下内容:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=
log=/var/log/mysql-general.log

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Run Code Online (Sandbox Code Playgroud)

然后我创建了文件并设置了权限:

# touch /var/log/mysql-general.log
# chown mysql. /var/log/mysql-general.log
# ls -l /var/log/mysql-general.log
-rw-r--r-- 1 mysql mysql 0 Jan 18 15:22 /var/log/mysql-general.log
Run Code Online (Sandbox Code Playgroud)

但是当我启动 mysqld 时,我得到:

120118 15:24:18  mysqld started
^G/usr/libexec/mysqld: File '/var/log/mysql-general.log' not found (Errcode: 13)
120118 15:24:18 [ERROR] Could not use /var/log/mysql-general.log for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
120118 15:24:18  InnoDB: Started; log sequence number 0 182917764
120118 15:24:18 [Note] /usr/libexec/mysqld: ready for connections.
Run Code Online (Sandbox Code Playgroud)

谁能建议为什么这不起作用?

Tim*_*Tim 6

“未找到”听起来像是权限问题,即使您已授予 mysql 访问该特定文件的权限,它也可能无法访问/var/log. 尝试将日志文件放在 mysql 数据文件夹中/var/lib/mysql/。我试图记住曾经在该路径之外看到 mysql 日志文件的情况。