错误:无法通过套接字'/var/run/mysqld/mysqld.sock'(2)连接到本地MySQL服务器--缺少/var/run/mysqld/mysqld.sock。

472

我的问题始于我无法再以root身份登录到mysql。我正试图在没有开启密码的情况下运行mysql,但每次输入命令时都会出问题。

# mysqld_safe --skip-grant-tables &

我从未收到提示。 我试图按照这些恢复密码的说明进行操作。
屏幕看起来就像这样:
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

我没有收到提示开始输入SQL命令以重置密码。

当我通过按下 CTRL + C 来终止它时,我会收到以下消息:

error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

如果我重试命令并等待足够长的时间,我会得到以下一系列消息:

root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

[1]+  Done                    mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#

但是,如果我尝试通过以下方式以root身份登录:
# mysql -u root

我收到了以下错误信息:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

我检查了一下,发现 /var/run/mysqld/mysqld.sock 文件不存在。文件夹是存在的,但是文件不在。
此外,我不知道这是否有帮助,但我运行了 find / -name mysqld 命令,它返回了:
/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder

我不知道这是否正常,但是我包含这些信息以便帮助您。

最终我决定卸载并重新安装mysql。

apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin

在按照上述相同顺序重新安装所有软件包后,在安装phpmyadmin期间,我收到了相同的错误提示:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

所以我尝试再次卸载/重新安装。这一次,在我卸载了软件包之后,我也手动将所有mysql文件和目录重命名为它们各自的位置中的mysql.bad

/var/lib/mysql 
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql

然后我尝试重新安装mysql-servermysql-client。但是我注意到它没有提示我输入密码。它不应该要求管理员密码吗?


只需重新启动服务器,然后重启mysql服务即可解决。 - bowpunya
2
@Anto 这不是重复的问题。这个缺少了/var/run/mysqld/mysqld.sock文件。你链接的那个问题有这个文件。 - motorbaby
这里和其他任何地方的答案都没有解决我的问题。由于这是一个新项目,我切换到了PostgreSQL,现在它可以正常工作了! :-) - James Bradbury
53个回答

-1

找到mysql配置文件my.cnf,我的文件在/etc/mysql/my.cnf下(根据实际情况更改socket所在位置)

port            = 3306
socket          = /tmp/mysql.sock

这里是一些特定程序的条目 以下数值假设您至少有32M内存

这以前被称为[safe_mysqld]。目前两个版本都被解析。

[mysqld_safe]
socket          = /tmp/mysql.sock
nice            = 0

-1

在Lampp中,据我所知它无法识别MySQL命令。 请尝试使用以下命令:

sudo /opt/lampp/bin/mysql

它将打开MySQL终端,您可以在其中与数据库通信。


-1
唯一有效的方法是完全卸载我的系统中的MYSQL。所以我按照以下步骤操作:
sudo apt-get remove mysql-server -y
sudo rm -r /var/lib/mysql
sudo rm -r /etc/mysql
sudo apt-get remove mysql-client -y
sudo apt-get remove mysql-common -y
sudo apt-get remove phpmyadmin -y
sudo apt-get install mysql-server -y

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接