Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm having problems enabling binary logging on mySQL 4.1.20

After adding

log-bin=/var/log/mysql/tts_db
to my.cnf, mysql fails to restart, with the following error in mysqld.log:

091112 03:36:37  mysqld started
/usr/libexec/mysqld: File '/var/log/mysql/tts_db.000001' not found (Errcode: 13)
091112  3:36:37 [ERROR] Could not use /var/log/mysql/tts_db 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.
091112  3:36:37 [ERROR] Aborting

091112  3:36:37 [Note] /usr/libexec/mysqld: Shutdown complete

091112 03:36:37  mysqld ended

Whilst looking at it to ask this question, I may have stumbled on the answer, but I'll check anyway - I can't restart the server until tomorrow morning. The mysql directory (/var/log/mysql) is owned by root. Is this problem because the mysql user that the server runs as doesn't have the correct privileges for creating a file in the directory?

Here's the complete my.cnf ( i know the log-bin is commented out - this is the current one)

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

set-variable=local-infile=0

set-variable = max_connections=130

long_query_time = 1
log-slow-queries =/var/log/mysql/mysql-slow.log

# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

skip-bdb

# We can't skip networking because the phpList server is on a different server.
#skip-networking
set-variable = innodb_thread_concurrency=2

table_cache = 512
query_cache_size = 20M
key_buffer_size = 64M
thread_cache_size = 10
tmp_table_size = 48M
# Added 11 Nov 2009 to enable binary logging for replication
server-id = 1
#log-bin=/var/log/mysql/tts_db
#expire-logs-days = 2
#max_binlog_size = 500M
#binlog-do-db=tts_db

#==============================================================================
# mysql.server section
#==============================================================================
#
[mysql.server]
user=mysql
basedir=/var/lib

#==============================================================================
# mysqd_safe section
#==============================================================================
#
[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
skip-bdb

set-variable = innodb_thread_concurrency=2

table_cache = 512
query_cache_size = 20M
key_buffer_size = 64M
thread_cache_size = 10
tmp_table_size = 48M

open-files-limit = 4096

share|improve this question
add comment

2 Answers

up vote 1 down vote accepted

In general on Linux systems, an Errno 13 means Permissions Denied or Access Denied.

What's the output of

# ls -ld /var/log/mysql
# ls -l /var/log/mysql

Does this match with your MySQL user?

If not, suggested solution (providing mysql is your mysql user and mysql is your group):

chown -R mysql:mysql /var/log/mysql
share|improve this answer
add comment

The mysql directory (/var/log/mysql) is owned by root. Is this problem because the mysql user that the server runs as doesn't have the correct privileges for creating a file in the directory?

Precisely. mysqld has dropped it's root privileges by this point. So like datadir, the directory needs to be owned by the user and group that mysqld is running as, in order for it to create the necessary files.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.