Timeout error occurred trying to start MySQL

Timeout error occurred trying to start MySQL

#/etc/init.d/mysqldrestart

stoppingmysql[ok]

TimeouterroroccurredtryingtostartMySQLDaemon.[failure]

但是这个时候mysql实际上已经起动了,因为用netstat-ln命令去看3306端口已经起动.使用mysql-uroot-ppassword也能连接到数据库.

解决方法:

修改/etc/init.d/mysqld.

在mysql里创建dameon用户,然后再修改/etc/init.d/mysqld.

具体操作如下:

我们不妨先看看/etc/init.d/mysqld起动脚本是如何工作的,注意下面的一段

#Ifyou'veremovedanonymoususers,thislinemustbechangedto

#useauserthatisallowedtopingmysqld.

ping="/usr/bin/mysqladmin-uUNKNOWN_MYSQL_USERping"

#Spinforamaximumoftensecondswaitingfortheservertocomeup

if[$ret-eq0];then

forxin12345678910;do

if[-n"`$ping2>/dev/null`"];then

break;

else

sleep1;

fi

done

if!([-n"`$ping2>/dev/null`"]);then

echo"TimeouterroroccurredtryingtostartMySQL

Daemon."action$"Starting$prog:"/bin/false

else

action$"Starting$prog:"/bin/true

fi

else

action$"Starting$prog:"/bin/false

fi

[$ret-eq0]&&touch/var/lock/subsys/mysqld

return$ret

我们看到,脚本判断mysql是否起动,使用的是mysqladminping命令.http://webjx.com

而这个命令想要正确执行是需要能够登录mysql的.现在一些默认帐号已经删除,而且其它帐号已经设置了密码(默认没有设置密码).于是它没有办法连接到mysql.http://webjx.com

于是我用了下面的办法解决.

a)建立一个帐号,不设置密码,不给任何权限.

b)修改/etc/init.d/mysqld

下面我给出具体操作

#mysql-uroot-ppasswd

mysql>GRANTselectONtest.*TOdaemon@localhost

mysql>revokeselectontest.*fromdaemon@localhost

vi打开/etc/init.d/mysqld

把下面这行

ping="/usr/bin/mysqladmin-uUNKNOWN_MYSQL_USERping"

修改为

ping="/usr/bin/mysqladmin-udaemonping"

保存,退出.

重新起动mysql

#/etc/init.d/mysqldrestart

StoppingMySQL:[OK]

StartingMySQL:[OK]

这样就可以了.