当我尝试连接mysql时,我得到以下错误:
无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)
有解决这个错误的方法吗?背后的原因可能是什么?
当我尝试连接mysql时,我得到以下错误:
无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)
有解决这个错误的方法吗?背后的原因可能是什么?
当前回答
遇到同样的问题——下面是我的解决方法。
假设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
希望这能有所帮助。
其他回答
我没有从上面所有的答案中找到任何解决方案,我确实有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错误了
在我的情况下,我已经将套接字文件移动到/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]部分中添加相同的套接字行来解决这个问题。
重现此错误的一种方法:如果您打算连接到外部服务器,但却连接到不存在的本地服务器:
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 ~ $
遇到同样的问题——下面是我的解决方法。
假设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现在应该启动并运行了。
我希望这也能帮助到其他人。