网站链接出错,报2002错误,SQLSTART[HY000] [2002] *
连接服务器,重启一下服务器,
使用-> mysql -u root -p 命令登陆是出现下面的错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
ls /tmp/mysql.sock
在/tmp/mysql.sock位置找不到所需要的mysql.sock文件,可能是由于my.cnf文件里对mysql.sock的位置设定导致。
linux下mysql.sock默认的是在/var/lib/mysql/, 查看[mysqld]下面加入mysql.sock的path的配置文件
之后,打开mysql的配置文件/etc/my.cnf
vim /etc/my.cnf(my.cnf也可能在其他路径下)
socket=/var/lib/mysql/mysql .sock
查到上面这一行,看看mysql.sock文件是否存在
ls /var/lib/mysql/mysql.sock
MySQL下mysql.sock丢失的原因一般是因为配置文件不一致所致,这时你就要检查数据库连接文件了。
当mysqld 错误启动,mysqld_safe 会清除一次mysql.sock 。
总结解决方法如下:
1、/var/lib/mysql/mysql .sock消失不见 /tmp/mysql.sock存在
要保证使用的mysql用户具有对该目录的写权限,否则这样的改动由于权限限制仍然会报错。
为了避免权限问题也可以创建软链接,在/var/lib/mysql下创建一个link
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
2、/tmp/mysql.sock文件不见了
/tmp/mysql.sock是套接文字,在mysqld启动时自动生成,如果套接字文件被删除了,本地客户就不能连接。
网上有人说mysql.sock套接字文件可以简单地通过重启服务器重新创建得到它,
init 6 重启命令
重启后发现错误还是那样,没有任何改变,mysql.sock重启服务器未自动生成。
mysql.sock是一个临时文件,在mysql启动时会自动生成,我的服务器未成功启动,自然就没有mysql.sock文件。
我尝试安全启动模式,mysqld_safe试图通过工作目录找到服务器和数据库,但mysqld_safe还是失败。
一般故障出现时没有切换到mysql用户,造成权限有问题,无法创建mysql授权表,所以也就无法创建/tmp/mysql.sock 和hostname.pid文件。所以要重新授权然后安全启动
/usr/local/bin/mysql_install_db //重建授权表
/usr/local/bin/mysqld_safe & //mysqld安全启动
/service httpd restart //重启服务器
/etc/rc.d/init.d/mysqld restart //重启mysqld
Stopping mysqld: \[ OK \]
Starting mysqld: \[ OK\]
mysqld重启成功,文件已经解决,重新生成新的 /tmp/mysql.sock 和 hostname.pid
切换到root用户,为/tmp/mysql.sock下文件/添加保护
$su root
#chmod +t /tmp/mysql.sock //添加保护
mysql -u root -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
还报之前的错误,但是/tmp/mysql.sock文件是存在的,所以创建软连接就可以解决
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
然后重启服务器,这样mysql就可以正常使用了。
成功解决了!~
本文为冯奎原创文章,转载无需和我联系,但请注明来自冯奎博客fengkui.net
最新评论