本人仍是个菜鸟,下面是个人经验之谈,能解决一些问题,有不对的地方,敬请斧正。html
个人是CentOS6.3+MySQL5.1.57。mysql
重启了一次服务器后, 使用> mysql -u root -p登录是出现下面的错误:linux
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)sql
因而,我检察mysql状态:数据库
> /etc/rc.d/init.d/mysqld status vim
显示stop,未运行。windows
>/etc/rc.d/init.d/mysqld restart安全
Stopping mysqld: [ OK ]服务器
Starting mysqld: [ FAILED]socket
>ps -ef | grep mysql
root 28221 27474 0 14:18 pts/0 00:00:00 grep mysql 只有这一条
至此,我能够肯定,mysql没法启动。
我开始排错,首先发现/tmp/mysql.sock不存在
>vim /etc/my.cnf
socket=/var/lib/mysql/mysql .sock
/var/lib/mysql/mysql .sock一样不存在
>find / -name mysql.sock
显示为空,未查询到mysql.sock文件,mysql.sock文件丢失了。
我看网上有人说 mysql.sock套接字文件 能够简单地经过重启服务器从新建立获得它,
>init 6 重启命令
重启后发现错误仍是那样,没有任何改变,mysql.sock重启服务器未自动生成。
接下来了解到mysql.sock是一个临时文件,在mysql启动时会自动生成,个人服务器未启动,天然就没有mysql.sock文件。
我尝试 安全启动模式, mysqld_safe试图经过工做目录找到服务器和数据库,但 mysqld_safe仍是失败。
>mysqld_safe &
Starting mysqld daemon with databases from ....../mysql/var
STOPPING server from pid file .......pid
130802 15:17:11 mysqld ended
各类命令尝试无效的状况下,我开始了本次最大的收获----学会看错误日志。
在错误日志中,启动失败的缘由极为明显,file ‘./mysql-bin。000004’ not found,failed to open!
mysql开启了bin日志功能,到数据库根目录查看该文件是存在的,多是文件权限的问题。
>chown -R mysql:mysql /....../mysql/var
> mysqld_safe &
>/etc/rc.d/init.d/mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [ OK]
成功启动了!~
此时mysql.sock文件出现了,在/var/lib/mysql/mysql .sock。以下图所示, 以”s”开头的文件都是socket文件。
> mysql -u root -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
/tmp/mysql.sock
解决这个错误很简单,由于/tmp/mysql.sock不存在, 用这样的方法:
>ln -s /var/lib/mysql/mysql .sock /tmp/mysql .sock
以”l”开头的文件是软连接文件。或者 能够经过修改/etc/my.cnf文件来修正它。
成功解决了!~
就是这样一个问题折腾了我这么久,错误日志让它无所遁形。查看错误日志能够明确问题所在,而不是像我以前那样盲目的找错。
俗话说授人以鱼不如授人以渔,学会查看日志,你也能够方便快捷的解决问题了。
错误令人进步,我与这个错误斗争了四个多小时,对linux的 “一切皆文件”这句话有了更深的了解,对我学习文件系统管理(目录树)有很大的帮助, 让个人思惟真正的从windows操做系统转向成linux系统。并最终解决问题,颇有成就感,我喜欢这种感受。
但愿能对阅读的你有所帮助,谢谢!~