WEB开发网
开发学院数据库MySQL linux下MYSQL常见两个错误的解决办法 阅读

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

 2008-10-29 22:16:57 来源:WEB开发网   
核心提示:问题1:登录mysql的错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)解决方法:1)默认的mysql.sock文件是在/tmp目录下,

问题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  ] 
 

  这样就可以了.

Tags:linux MYSQL 常见

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接