当前位置: 首页 > 图文教程 > 数据库 > MYSQL > linux下MYSQL常见两个错误的解决办法

MYSQL
让MYSQL彻底支持中文
数据安全之MySQL安全的二十三条军规
MySQL的一些安全注意点
mysql5存储过程编写实践
oracle移植到mysql注意事项
对抗MySQL数据库解密高手
最简便的备份MySQL数据库的方法
Linux操作系统下MySQL数据库的使用方法
Oracle与MySQL删除字段时对索引和约束的处理
Linux下C连接MySQL出现错误解决一例
Linux下MySQL整个数据库的备份与还原
MySQL数据库的授权原则
MySQL中数据表操作详解
在函数间不能传递32个以上参数的疑难问题
带你轻松接触MySQL数据库的出错代码列表
MySQL数据库备份恢复的两个实用方法
巧用JDBC实现对MySQL的“增删改查”
怎样在MySQL数据库中导出整个数据库
实例讲解MySQL数据库中文问题的解决方法
实例讲解如何使用C++操作MySQL数据库类

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


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

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

  这样就可以了.