Take the 2-minute tour ×

I saw on SF that there's an option in MySQL to log all queries. So, in my version (mysql-server-5.0.45-7.el5 on CentOS 5.2) this appears to be a case of enabling the 'log' option, so I edited /etc/my.cnf to add this:



I then created the file and set permissions:

# 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

But when I start mysqld I get:

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.

Can anyone suggest why this isn't working?

share|improve this question
happen to use centos/redhat with selinux is enabled? –  Mike Jan 18 '12 at 15:30
add comment

3 Answers

up vote 2 down vote accepted

"Not found" sounds like a permission problem, even though you have given mysql permission to touch that specific file, it might not have access to /var/log. Try putting the log file in the mysql data folder, /var/lib/mysql/. I am trying to remember a case of ever seeing the mysql log files outside of that path..

share|improve this answer
If I can remember correctly that is the problem - mysql needs read access to the directory housing the log file itself. –  thinice Jan 18 '12 at 15:24
Spot on Tim! Changing my /etc/my.cnf entry to read log=/var/lib/mysql/mysql-general.log fixed the problem. (Curiously trying to use /var/log/mysql/mysql-general.log didn't work either). Thank you! –  leonstr Jan 18 '12 at 15:38
add comment

If you're on Ubuntu, you may hit this if you're trying to put the log file outside of a mysql directory (e.g. /var/log/mysql). To fix this, add your path to /etc/apparmor.d/usr.sbin.mysqld.

share|improve this answer
add comment

This is not an unusual problem when services write to /var/log. The usual process when installing a new app as root is to touch the new file by name, and then chown that file over to the user/group that will be writing to that file. IE:

root$ touch /var/log/mysql_general.log

root$ chown mysql.mysql /var/log/mysql_general.log

This will allow the mysqld service to write to the log file even though the effective userid/gid is not wrote. You may want to check logrotate to setup a rotation schedule if yours doesn't handle it by default. For more details on permissions and best practices, you'll want to investigate syslog configuration & maintenance.

(I just fixed this same issue on an old server I inherited.)

share|improve this answer
add comment

Your Answer


