ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
在Kylin服务器上安装好mysql后登录时出现以下问题:
查找mysql.sock 文件,命令如下:
find -name mysql.sock
结果如下:
如果文件不存在,
mysql.sock丢失,mysqld_safe启动报错
重启了一次服务器后,使用> mysql -u root -p登陆是出现下面的错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
于是,我检察mysql状态:
> /etc/rc.d/init.d/mysqld status
显示stop,未运行。
>/etc/rc.d/init.d/mysqld restart
Stopping mysqld: [ OK ]
MySQL Daemon failed to start.
Starting mysqld: [ FAILED]
>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文件来修正它。
成功解决了!~
文件存在,但是不存在/var/lib/mysql目录下,做一个软连接即可,在这之前先确定当前用户为root用户,命令为 whoami
由普通用户切换到root用户,su 回车,输入密码即可进入root
关闭mysql数据库,命令如下:
service mysqld stop
将/tmp/mysql.sock 设置软连接到 /var/lib/mysql/mysql.sock
命令如下:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
重新启动mysql
service mysqld start
重新登录mysql数据库,成功
如果还是报ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)
则打开my.cnf文件,
查找my.cnf文件的位置
find -name my.cnf
我的文件位置是 ./etc/my.cnf
打开my.cnf文件
vim /etc/my.cnf
找到[mysqld],在它的后面任意下一行添加如下代码:
socket=/var/lib/mysql/mysql.sock
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | [mysqld] datadir=/usr/ local /mysql/data basedir=/usr/ local /mysql socket=/usr/ local /mysql/data/mysql.sock user =mysql port=3306 character - set -server=utf8 symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [client] default - character - set =utf8 port=3306 socket=/usr/ local /mysql/data/mysql.sock [mysql] default - character - set =utf8 socket=/usr/ local /mysql/data/mysql.sock |
保存退出,重启mysql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程