当前位置: 首页 > 图文教程 > 数据库 > MYSQL > Timeout error occurred trying to start MySQL Daemon

MYSQL
MySQL安全性指南
linux下建立mysql镜像数据库
Mysql备份脚本
MySQL的DBI/DBD简明安装手册
Mysql中左连接的使用
MySQL管理介绍
采用ODBC接口访问MySQL指南
MySQL UDF调试方式debugview
MySQL数据目录结构
MySQL数据导入导出方法与工具介绍
MySQL服务维护笔记(上)
跟着lanche学MySQL
MYSQL初学者使用指南
MySQL数据库的漏洞相当于其它数据库1/4
通过Mysql的语句生成后门木马的方法
怎样使MySQL安全以对抗解密高手
MySQL3.23.31之前版本的安全漏洞
MySQL安全问题(匿名用户)的一点心得
通过mysql入侵NT和win2000
Mysql数据库的安全配置、实用技巧

MYSQL 中的 Timeout error occurred trying to start MySQL Daemon


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 121 ::
收藏到网摘: n/a

#/etc/init.d/mysqld restart
stopping mysql     [ok]
Timeout error occurred trying 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've removed anonymous users, this line must be changed to
        # use a user that is allowed to ping mysqld.
        ping="/usr/bin/mysqladmin -uUNKNOWN_MYSQL_USER ping"
        # Spin for a maximum of ten seconds waiting for the server to come up
        if [ $ret -eq 0 ]; then
            for x in 1 2 3 4 5 6 7 8 9 10; do
            if [ -n "`$ping 2> /dev/null`" ]; then
                    break;
            else
                    sleep 1;
            fi
            done
            if !([ -n "`$ping 2> /dev/null`" ]); then
                    echo "Timeout error occurred trying to start MySQL
Daemon."                    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命令. http://ruanchen.com
    而这个命令想要正确执行是需要能够登录mysql的.现在一些默认帐号已经删除,而且其它帐号已经设置了密码(默认没有设置密码).于是它没有办法连接到mysql. http://ruanchen.com
   于是我用了下面的办法解决.
   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_USER ping" 

   修改为
   ping="/usr/bin/mysqladmin -udaemon ping" 

  保存,退出.
  重新起动mysql
  #/etc/init.d/mysqld restart
  Stopping MySQL:                                            [  OK  ]
  Starting MySQL:                                            [  OK  ]
 
  这样就可以了.