the serveice mysql_MySQL: Starting MySQL….. ERROR! The server quit without updating PID file解决办法...

1 问题

[root@localhost mysql]# /etc/rc.d/init.d/mysql status

MySQL is not running, but lock file

(/var/lock/subsys/mysql[FAILED][root@localhost mysql]#

/etc/rc.d/init.d/mysql start

Starting MySQL...The server quit without

updating PID file

(/usr/local/mysql/data/localhost.localdomain.pid). [FAILED]

2 原因

没有初始化权限表

3 解决办法

#cd /usr/local/mysql(进入mysql安装目录)

#chown -R mysql.mysql .

#su - mysql

$cd server

$scripts/mysql_install_db

4 本人解决过程

[root@localhost ~]# cd

/usr/local/mysql

[root@localhost mysql]# chown -R

mysql.mysql .[root@localhost mysql]# su - mysql[mysql@localhost ~]$ cd /usr/local/mysql[mysql@localhost mysql]$

scripts/mysql_install_dbInstalling MySQL

system tables...

OK

Filling help tables...

OK

To start mysqld at boot time you have to copy

support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER

!

To do so, start the server, then issue the following commands:

./bin/mysqladmin -u root password 'new-password'

./bin/mysqladmin -u root -h localhost.localdomain password

'new-password'

Alternatively you can run:

./bin/mysql_secure_installation

which will also give you the option of removing the test

databases and anonymous user created by default. This is

strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:

cd . ; ./bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl

cd ./mysql-test ; perl mysql-test-run.pl

Please report any problems with the ./bin/mysqlbug script!

[mysql@localhost mysql]$ /usr/local/mysql/bin/mysqld_safe --user=mysql

&[1] 11767

[mysql@localhost mysql]$ 120502 07:01:17 mysqld_safe Logging to

'/usr/local/mysql/data/localhost.localdomain.err'.

120502 07:01:17 mysqld_safe Starting mysqld daemon with databases

from /usr/local/mysql/data

[mysql@localhost mysql]$ /etc/rc.d/init.d/mysql statusMySQL running

(11830) [ OK ]

[mysql@localhost mysql]$ /etc/rc.d/init.d/mysql startStarting

MySQL [ OK ]

附一文:MySQL:

Starting MySQL….. ERROR! The server quit without updating PID

file

a4c26d1e5885305701be709a3d33442f.png

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.

/usr/local/etc/rc.d/mysql.server start

Oh well, I got the following error messages:

Starting MySQL..... ERROR! The server quit without updating PID file.

Sometimes, the message will tell you the exact location of which

PID file:

Starting MySQL..... ERROR! The server quit without updating PID file (/var/db/mysql/www.icesquare.com.pid).

There are several solutions to troubleshoot these problems. I

will go over each one by one.

Solution 1: Reboot The Computer

Although it sounds simple, but it really works. During the

system upgrade, the OS may disable some of your daemons. Instead of

troubleshooting each one by one, the easiest way is to start

everything over. For example, I experienced this problem today

after upgrading the Apache and Ruby (Yes, MySQL is

not part of the update), and I got this error message afterward.

After rebooting the computer, the error message is gone.

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.0M

101112 10:49:16 InnoDB: Completed initialization of buffer pool

101112 10:49:16 InnoDB: highest supported file format is Barracuda.

101112 10:49:17 InnoDB: 1.1.3 started; log sequence number 1589404

101112 10:49:17 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.proxies_priv' doesn't exist

101112 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:

/usr/local/etc/rc.d/mysql-server start

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: mysql

Looking for 'mysqlcheck' as: mysqlcheck

Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/tmp/mysql.sock'

Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/tmp/mysql.sock'

mysql.columns_priv OK

mysql.db OK

mysql.event OK

mysql.func OK

mysql.general_log OK

mysql.help_category OK

mysql.help_keyword OK

mysql.help_relation OK

mysql.help_topic OK

mysql.host OK

mysql.ndb_binlog_index OK

mysql.plugin OK

mysql.proc OK

mysql.procs_priv OK

mysql.servers OK

mysql.slow_log OK

mysql.tables_priv OK

mysql.time_zone OK

mysql.time_zone_leap_second OK

mysql.time_zone_name OK

mysql.time_zone_transition OK

mysql.time_zone_transition_type OK

mysql.user OK

Running '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.

–Derrick

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值