How to fix MySQL Server PID File Errors

This is kind of a common problem and may have several reasons. Sometimes when we simply want to restart the MySQL Server, we can get such an error:
ERROR! MySQL server PID file could not be found!

First of all, always check if the /tmp partition is full. This can happen when MySQL can’t write to the /tmp partition to create a lock file.
$ df -h

Also, this may be because, somehow the /tmp partition has been cleared and the MySQL server is looking for the PID file there. So easy-peasy just create a new pid file and restart the server.
$ touch /tmp/mysql.sock
$ service mysqld restart

It can also help to check the status, sometimes it helps. For example sometimes you can get an error like this :
$ service mysqld status
ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists

Well, it’s kind of obvious, just remove the lock file and restart the server.

$ rm /var/lock/subsys/mysql
$ service mysqld restart

If none of these help, and you’re getting an error like this:
$ service mysqld restart
ERROR! MySQL server PID file could not be found!
Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/mydomain.com.pid).

Then there might be a more complicated problem. Check the log file at /var/lib/mysql/mydomain.com.err
$ tail /var/lib/mysql/mydomain.com.err
120602 16:54:09 mysqld_safe mysqld from pid file /var/lib/mysql/mydomain.com.pid ended

This line tells us that we have a compatibility problem with some of our tables and mysql fails to start in safe mode.

Now let’s change the way mysql starts to work around this situtation.

$ { echo “mysql_enable=\”YES\””; echo “mysql_args=\”–skip-grant-tables –skip-networking\””; } >> /etc/init/rc.conf

Time to restart

$ /etc/init.d/mysqld restart

You should a get successfull restart. Now try and upgrade the server.
$ mysql_upgrade

If it says you have the latest version, still force it.
$ mysql_upgrade –force

It will check every database if it’s ok. After that, we can return things to normal, comment out the last line we’ve added to /etc/init/rc.conf

$ sed -i ‘/mysql_args/s/^/#/’ /etc/init/rc.conf
$ service mysqld restart

Hope this helps.

Leave a Reply

Your email address will not be published.