linux下MYSQL常见两个错误的解决办法

问题1:登录mysql的错误
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

解决方法:
1)默认的mysql.sock文件是在/tmp目录下。
2)我们建立一个软连接,ln -s /tmp/mysql.sock  /var/lib/mysql/mysql.sock

问题2:Timeout error occurred trying to start MySQL Daemon.
#/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命令. 
    而这个命令想要正确执行是需要能够登录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_USER ping"  
   修改为 
   ping="/usr/bin/mysqladmin -udaemon ping"  
  保存,退出. 
  重新起动mysql
  #/etc/init.d/mysqld restart 
  Stopping MySQL:           [  OK  ] 
  Starting MySQL:           [  OK  ] 
  这样就可以了。


匿名2008-10-31 22:53:4558.62.100.*

快速查询