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

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

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


当前回答

以下是对我有效的方法:

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

其他回答

在我的情况下,我已经将套接字文件移动到/etc/my.cnf内的另一个位置 从/var/lib/mysql/mysql.Sock到/tmp/mysql.sock

即使在重新启动mysqld服务后,当我尝试连接时,我仍然看到错误消息。 错误2002 (HY000):无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)

问题在于客户端的配置方式。运行诊断将实际显示正确的套接字路径。Eg 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

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

很可能是mysql。/var/lib/mysql/中不存在Sock。

如果你在另一个位置找到了相同的文件,那么符号链接它:

例如:我把它放在/data/mysql_datadir/mysql.sock中

切换用户到mysql,执行如下所示:

su mysql

ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock

这解决了我的问题

如果你是在sf.net的壳,尝试:

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

更改{LETTER}和{GROUP ID},如您的MySQL数据库的项目管理配置文件中所示。

在我的情况下,我导入了一个新的数据库,在那之后我无法再次连接。最后我意识到这是一个空间问题。

你可以删除最后一个数据库,然后扩展硬盘或者像我做的那样,恢复虚拟机的快照。

以防有人觉得这有用

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