无法通过套接字'/var/lib/mysql/mysql.sock'(2)连接到本地mysql服务器

wxclj1h5  于 2021-06-21  发布在  Mysql
关注(0)|答案(30)|浏览(660)

当我尝试连接到mysql时,出现以下错误: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 这个错误有解决办法吗?背后的原因可能是什么?

p8h8hvxi

p8h8hvxi1#

我的问题是我成功地安装了mysql,而且运行良好。
但有一天,同样的错误发生了。
无法通过套接字'/var/lib/mysql/mysql.sock'(2)连接到本地mysql服务器
并且不存在mysql.sock文件。
此解决方案解决了我的问题,mysql重新启动并运行:
以root用户身份登录:

sudo su -

跑步:

systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service

测试为根目录:

mysql -u root -p

mysql现在应该已经启动并运行了。
我希望这也能帮助别人。

dgiusagp

dgiusagp2#

以下是对我有效的方法:

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
gcmastyq

gcmastyq3#

只需编辑 /etc/my.cnf 将以下行添加到 my.cnf ```
[mysqld]

socket=/var/lib/mysql/mysql.sock

[client]

socket=/var/lib/mysql/mysql.sock

重新启动mysql并重新连接
mysql-u用户-p密码数据库-h主机;
whhtz7ly

whhtz7ly4#

在ssh客户机中尝试连接mysql时遇到此问题,当需要在套接字之间切换时,将套接字路径添加到命令中会很有帮助。

> mysql -u user -p --socket=/path/to/mysql5143.sock
eanckbw9

eanckbw95#

如果您在sf.net的shell中,请尝试:

mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p

更改{letter}和{groupid},如项目管理概要文件的mysql数据库所示。

wvt8vs2t

wvt8vs2t6#

我不得不禁用 explicit_defaults_for_timestamp 从我的.cnf。

kjthegm6

kjthegm67#

如果您更改/var/lib/mysql中的文件[例如复制或替换该文件],则必须将文件的所有者设置为mysql如果mariadb.service restart失败,这一点非常重要
周恩来mysql:mysql /var/lib/mysql/*
chmod-r 700/var/lib/mysql/*

wqsoz72f

wqsoz72f8#

在我的例子中,我已经将套接字文件移到了内部的另一个位置 /etc/my.cnf/var/lib/mysql/mysql.sock/tmp/mysql.sock 即使重新启动mysqld服务,在尝试连接时仍然会看到错误消息。 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 问题在于客户端的配置方式。运行诊断程序将实际显示正确的套接字路径。如 ps aux | grep mysqld 作品:

mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock

不起作用:

mysql -uroot -p
mysql -uroot -p -hlocalhost

您可以通过在下面添加相同的套接字行来解决此问题 [client] mysql配置中的部分。

xmq68pz9

xmq68pz99#

mysql服务器没有运行,或者不是其套接字文件的位置(请检查my.cnf)。

tyu7yeag

tyu7yeag10#

确保已启动服务器:

mysql.server start

然后与root用户连接:

mysql -uroot
tjjdgumg

tjjdgumg11#

您是连接到“localhost”还是“127.0.0.1”?我注意到,当您连接到“localhost”时,使用的是socket连接器,但当您连接到“127.0.0.1”时,使用的是tcp/ip连接器。如果插座连接器未启用/工作,可以尝试使用“127.0.0.1”。

92dk7w1h

92dk7w1h12#

请检查是否有其他mysql服务正在运行。

8yoxcaq7

8yoxcaq713#

尝试前2、3种解决方案。错误仍然弹出&如果你找不到 /var/lib/mysql/mysql.sock ```
find /var/ -name mysql.sock

检查/var/

df

如果目录已满,请删除一些未使用的文件/目录

rm /var/cache/*

也许你的问题现在可以解决了。
4si2a6ki

4si2a6ki14#

请注意,虽然mysql从my.cnf文件中读取socketfile的位置信息,但mysql\u secure\u安装程序有时似乎做得不正确。
因此,如果你像我一样,在安装时把东西混在一起,你可能会遇到这样的情况:你可以用mysql连接到数据库,但是这个东西是不安全的(反正不用那个脚本)。
为了解决这个问题,sreddy的建议很管用:从脚本期望的套接字到它实际所在的位置建立一个软链接。例子:

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

(我使用/tmp/作为套接字的默认位置)

cfh9epnr

cfh9epnr15#

再现此错误的一种方法是:如果要连接到外部服务器,而不是连接到不存在的本地服务器:

eric@dev ~ $ mysql -u dev -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through 
socket '/var/lib/mysql/mysql.sock' (2)
eric@dev ~ $

因此,必须按以下方式指定主机:

eric@dev ~ $ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.6.19 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+-------------------------+
| Database                |
+-------------------------+
| information_schema      |
| mysql                   |
| performance_schema      |
+-------------------------+
3 rows in set (0.00 sec)

mysql> exit
Bye
eric@dev ~ $

相关问题