当我尝试连接mysql时,我得到以下错误:

无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)

有解决这个错误的方法吗?背后的原因可能是什么?


当前回答

如果你改变了/var/lib/mysql中的文件[像复制或替换它],你必须将文件的所有者设置为mysql,如果mariadb。服务重启失败

chown -R mysql:mysql /var/lib/mysql/* chmod -R 700 /var/lib/mysql/*

其他回答

遇到同样的问题——下面是我的解决方法。

假设mysqld正在运行,那么问题可能只是mysql客户端不知道在哪里寻找套接字文件。

解决这个问题最直接的方法是在用户的配置文件.my.cnf文件中添加以下一行(在linux上通常在/home/myusername下):

socket=<path to the mysql socket file>

如果你没有.my.cnf文件,那么创建一个包含以下内容的文件:

[mysql]
socket=<path to the mysql socket file>

在我的例子中,由于我将mysql默认数据文件夹(/var/lib/mysql)移动到不同的位置(/data/mysql),我添加到.my.cnf如下:

[mysql]
socket=/data/mysql/mysql.sock

希望这能有所帮助。

我的问题是,我成功安装mysql,它工作得很好。

但是有一天,同样的错误发生了。

无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)

没有mysql。Sock文件存在。

这个解决方案解决了我的问题,mysql又开始运行了:

以root用户登录:

sudo su -

Run:

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

以root身份测试:

mysql -u root -p

Mysql现在应该启动并运行了。

我希望这也能帮助到其他人。

这可能是一个愚蠢的建议,但请100%确保您的DB仍然托管在localhost。例如,如果网络管理员选择(或更改为)Amazon DB主机,您将需要该主机名!

MariaDB是MySQL的一个社区开发的分支,在许多发行版中已经成为MySQL的默认实现。

首先你应该开始,

$ sudo systemctl start mariadb

如果失败了,不如试试,

$ sudo systemctl start mysqld

然后启动mysql,

$ mysql -u root -p

到今天为止,在Fedora中,这个包被命名为mariadb 在Ubuntu中叫做mariadb-server。

因此,如果您的系统中还没有安装它,您可能必须安装它。

我没有从上面所有的答案中找到任何解决方案,我确实有mariadb安装,从Debian 11的源代码安装(不是从Debian apt包)。所以每当我在终端中触发mysql命令时,我都会得到这个错误:

ERROR 2002 (HY000): Can't connect to local server through socket '/run/mysqld/mysqld.sock' (2)

和mysql错误日志只显示相同的错误套接字上面,这是我很难知道背后的原因

我所做的是删除我的发行版中有mariadb依赖文件的mailutils包。

因此,我只需要触发这两个命令

apt -y remove mailutils
apt -y autoremove

当我在终端运行mysql命令时,我再也没有socket错误了