方法1:
#/etc/init.d/MySQLd restart
stopping mysql[ok]
Timeout error occurredtrying to start MySQL Daemon.[failure]
但是这个时候mysql实际上已经起动了,因为用netstat -ln命令去看3306端口已经起动.使用mysql -u root -p password也能连接到数据库.
解决方法:
修改/etc/init.d/mysqld.
在mysql里创建dameon用户,然后再修改/etc/init.d/mysqld.
具体操作如下:
我们不妨先看看/etc/init.d/mysqld起动脚本是如何工作的,注意下面的一段
# If you'veremoved anonymous users, this line must be changed to
# use a user that isallowed to ping mysqld.
ping="/usr/bin/mysqladmin-uUNKNOWN_MYSQL_USER ping"
# Spin for a maximum often seconds waiting for the server to come up
if [ $ret -eq 0 ]; then
for x in 1 2 3 4 5 6 7 8 910; do
if [ -n "`$ping 2>/dev/null`" ]; then
break;
else
sleep 1;
fi
done
if !([ -n "`$ping2> /dev/null`" ]); then
echo "Timeout erroroccurred trying to start MySQLDaemon."action $"Starting$prog: " /bin/false
else
action $"Starting$prog: " /bin/true
fi
else
action $"Starting $prog:" /bin/false
fi
[ $ret -eq 0 ] &&touch /var/lock/subsys/mysqld
return $ret
我们看到,脚本判断mysql是否起动,使用的是mysqladmin ping命令.
而这个命令想要正确执行是需要能够登录mysql的.现在一些默认帐号已经删除,而且其它帐号已经设置了密码(默认没有设置密码).于是它没有办法连接到mysql. >
于是我用了下面的办法解决.
a)建立一个帐号,不设置密码,不给任何权限.
b)修改/etc/init.d/mysqld
下面我给出具体操作
#mysql -u root -p passwd
mysql>GRANT select ON test.* TO daemon@localhost
mysql>revoke select on test.* from daemon@localhost
vi打开/etc/init.d/mysqld
把下面这行
ping="/usr/bin/mysqladmin -uUNKNOWN_MYSQL_USERping"
修改为
ping="/usr/bin/mysqladmin -udaemon ping"
保存,退出.
重新起动mysql
#/etc/init.d/mysqld restart
Stopping MySQL:[OK]
Starting MySQL:[OK]
这样就可以了
方法2:
数据库报错Errcode:28,我先是重启了mysqld服务,但等好长一段时间提示:Timeout error occurredtrying to start MySQL Daemon,通过网上查了后,说是空间不足,df -lh果不其然,删除了一些没用的文件,然后重启mysqld,好了,哈哈
方法3:
由于删除了/var/lib/mysql下的mysql-bin.0000xxxxx这些文件,service mysqld start就报这个错,在网上搜,大多数都是说用netstat查看一下,说是mysql已经启动了,但我这根本就没有启动,有的说是权限问题,我把/etc/init.d/mysqld的权限改成777了,还是启不动,后来搜到了好几页,才找到真正的解决办法,在这里我记录一下,以便大家少走弯路。
解决办法执行这个命令:#/usr/bin/mysql_install_db
(今天又碰到了这个问题,以为还是这个原因,就执行了命令,发现还是没好,最后找到是没有给var/lib/mysql定义为mysql:mysql的属组!原因是要恢复上次的备份,替换文件的时候没有看属组。看来还是不细心!)