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

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

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


当前回答

我没有从上面所有的答案中找到任何解决方案,我确实有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错误了

其他回答

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

首先你应该开始,

$ sudo systemctl start mariadb

如果失败了,不如试试,

$ sudo systemctl start mysqld

然后启动mysql,

$ mysql -u root -p

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

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

注意,当mysql从my.cnf文件中读取套接字文件的位置信息时,mysql_secure_installation程序有时似乎不能正确地这样做。

所以,如果你像我一样,在安装时到处乱放东西,你可能会遇到这样的情况:你可以用mysql连接到数据库,但东西不能被保护(无论如何不使用那个脚本)。

为了解决这个问题,sreddy的建议很有效:从脚本期望套接字的位置到它实际所在的位置创建一个软链接。例子:

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

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

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

您正在连接到“localhost”还是“127.0.0.1”?我注意到,当您连接到“localhost”时使用套接字连接器,但当您连接到“127.0.0.1”时使用TCP/IP连接器。如果套接字连接器未启用/正在工作,则可以尝试使用“127.0.0.1”。

请确保你已经正确安装了MySQL服务器,我遇到过这个错误很多次,我认为从套接字调试很复杂,我的意思是重新安装它可能更容易。

如果你使用的是CentOS 7,下面是正确的安装方法:

首先,添加mysql社区源代码 Yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

然后你可以通过yum install mysql-community-server安装它

用systemctl启动它:systemctl Start mysqld