当我尝试连接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错误了

其他回答

重现此错误的一种方法:如果您打算连接到外部服务器,但却连接到不存在的本地服务器:

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 ~ $

很可能是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

这解决了我的问题

如果你的mysql之前是工作的,突然停止了,就“重启”服务器。

在我的CentOS vps上遇到了这个问题->

不断得到

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

尝试了所有的技术,最终重新启动服务器修复了问题->

立即关闭-r

希望这能有所帮助!!

以下是对我有效的方法:

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

检查你的mysqld服务是否正在运行,如果没有,启动服务。

如果您的问题没有解决,请查找/etc/my.cnf并按以下方式进行修改,在这里您将看到以socket开头的一行。在进行此更新之前对该文件进行备份。

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

改变

socket=/opt/lampp/var/mysql/mysql.sock -u root