MySQL Server Not Starting on Boot

I have installed MySQL on a RHEL 5 server and I want to set it up so that the server starts on boot.

I've ran the chkconfig --list mysqld command and it's currently running on levels 3, 4 and 5. However, when I reboot the server, no mysqld daemon is started.

I've also tried manually starting the server by executing /usr/bin/mysqld_safe and I get the following output:

Starting mysqld daemon with databases from /var/lib/mysql
STOPPING server from pid file /var/run/mysqld/mysqld.pid
100319 10:31:30  mysqld ended

I looked in /var/log/mysqld.log and I found the following:

100319 10:29:01  mysqld started
100319 10:29:02  InnoDB: Started; log sequence number 0 29752204
100319 10:29:02 [ERROR] Can't start server : Bind on unix socket: Permission denied
100319 10:29:02 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
100319 10:29:02 [ERROR] Aborting

UPDATE: I tried starting using the mysql.server script (from /usr/share/mysql) and it worked.So I went ahead and linked this script to the appropriate run levels (rc0.d, rc3.d and rc5.d). However, it's still not starting on boot.


Solution 1:

Is this version of mysqld from the official repository or an rpm that you downloaded from mysql.com?

If mysql.server script works then you should be able to copy it to /etc/init.d and then symlink to it from /etc/rc3.d rc4.d and rc5.d.

Edit: But you'll need to use chkconfig to turn mysqld off first before you do the symlinks.

Solution 2:

Remove /var/lib/mysql/mysql.sock and then chkconfig mysqld on. You can get a menu of services by running ntsysv. Use man chkconfig and man ntsysv to learn more about how to use those programs.

Solution 3:

You may also want to install the strace package (it's in the standard YUM repository), then run:

strace /etc/init.d/mysqld start

You should be able to determine pretty quickly where the error lies.

On RHEL/CentOS, you generally want to use the init script for stopping and starting the mysqld daemon -- it does a lot more than simply start /usr/bin/mysqld_safe&.