首页 > 代码库 > MySQL: Starting MySQL….. ERROR! The server quit without updating PID file
MySQL: Starting MySQL….. ERROR! The server quit without updating PID file
文章来源:http://icesquare.com/wordpress/mysql-starting-mysql-error-the-server-quit-without-updating-pid-file/
今天启动MySQL 遇见了这个问题,网上搜索,结果各种改文件,删除文件纯属坑爹;在上边的网站上发现了问题的解决方案~老外总结的真不错!拿过来自己学习一下
This step-by-step guide is mainly for FreeBSD, however the idea is the same for Linux. Every once a while, when I update my FreeBSD box, the system likes to shutdown my MySQL server. Therefore, I need to start it again after the update is done. Unfortunately, the upgrade process is not smooth every time. Sometimes it will throw me some error.
1,启动MySQL
/usr/local/etc/rc.d/mysql.server start
2,发现了下述错误
Starting MySQL..... ERROR! The server quit without updating PID file.
3,错误信息很明确的定位你出现的问题
Starting MySQL..... ERROR! The server quit without updating PID file (/var/db/mysql/www.icesquare.com.pid).
三种解决方案如下:
Solution 1: Reboot The Computer 重启你的电脑
Solution 2: Remove Your MySQL Config File 删除你的配置文件
If you have modified your MySQL configuration file, MySQL may not like it few versions after (MySQL is not backward compatibility friendly). It can be the problem of using an unsupported variable, or something similar. The easiest way is to remove your configuration file, and try to start the MySQL server again:
Backup your MySQL configuration first.
mv /etc/my.cnf /etc/my.cnf.backup
And restart the MySQL server again:
/usr/local/share/mysql/mysql.server start
Hopefully you will see the following message:
Starting MySQL. SUCCESS!
Solution 3: Upgrade Your Database File 更新你的数据库文件
Sometimes, the newer MySQL doesn’t like the database created in earlier version. I discovered this when I upgrade to MySQL 5.5.7:
Starting MySQL..... ERROR! The server quit without updating PID file (/var/db/mysql/www.icesquare.com.pid).
Since MySQL tells me which PID file causes the problem, I open the file and take a look what’s going on:
sudo tail /var/db/mysql/www.icesquare.com.err
And I saw something interesting: tables: Table ‘mysql.proxies_priv’ doesn’t exist:
101112 10:49:16 InnoDB: Initializing buffer pool, size = 128.0M101112 10:49:16 InnoDB: Completed initialization of buffer pool101112 10:49:16 InnoDB: highest supported file format is Barracuda.101112 10:49:17 InnoDB: 1.1.3 started; log sequence number 1589404101112 10:49:17 [ERROR] Fatal error: Can‘t open and lock privilege tables: Table ‘mysql.proxies_priv‘ doesn‘t exist101112 10:49:17 mysqld_safe mysqld from pid file /var/db/mysql/www.icesquare.com.pid ended
The reason is very simple. MySQL could not open a table created in the earlier version (< 5.7.7) because it is not compatible with the current version. So, we can try to start the MySQL in safe mode through rc.d. First, you can edit the /etc/rc.conf and put the following into the file:
mysql_enable="YES"mysql_args="--skip-grant-tables --skip-networking"
Restart MySQL through rc.d:
If you did it right, you should see something like the following:
Starting MySQL.. SUCCESS!
Now, MySQL is already running the safe-mode. We want to perform a MySQL upgrade on all tables:
sudo mysql_upgrade
You should see something like this:
Looking for ‘mysql‘ as: mysqlLooking for ‘mysqlcheck‘ as: mysqlcheckRunning ‘mysqlcheck‘ with connection arguments: ‘--port=3306‘ ‘--socket=/tmp/mysql.sock‘Running ‘mysqlcheck‘ with connection arguments: ‘--port=3306‘ ‘--socket=/tmp/mysql.sock‘mysql.columns_priv OKmysql.db OKmysql.event OKmysql.func OKmysql.general_log OKmysql.help_category OKmysql.help_keyword OKmysql.help_relation OKmysql.help_topic OKmysql.host OKmysql.ndb_binlog_index OKmysql.plugin OKmysql.proc OKmysql.procs_priv OKmysql.servers OKmysql.slow_log OKmysql.tables_priv OKmysql.time_zone OKmysql.time_zone_leap_second OKmysql.time_zone_name OKmysql.time_zone_transition OKmysql.time_zone_transition_type OKmysql.user OKRunning ‘mysql_fix_privilege_tables‘...OK
Now, we want to switch the MySQL back to normal mode by commenting the extra options in /etc/rc.conf:
mysql_enable="YES"#mysql_args="--skip-grant-tables --skip-networking"
And restart MySQL through /etc/rc.d:
/usr/local/etc/rc.d/mysql-server restart
Now the MySQL is up and running again!
Happy MySQLing.