错误:无法通过套接字'/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个回答

0

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

有时是由于mysql服务器崩溃,我认为在实时服务器中您应该重新启动服务器,在本地主机中您需要重新启动mysql服务器。


0
在我的情况下,问题出在/etc/mysql/my.cnf中的绑定地址,因此:
nano /etc/mysql/my.cnf
查找绑定地址,并删除具有主机IP(而不是127.0.0.1)的特定内容。

0

我尝试了几乎所有列出的解决方案,但都没有成功,直到我重新启动了机器,然后在发出命令“service mysql restart”时mysql服务器重新启动。


0

0

只是和大家分享一下,我遇到了同样的问题,并通过以下命令解决了:

sudo ln -s /var/lib/mysql/mysql.sock /var/run/mysqld/mysqld.sock

我在我的 my.cnf 文件中硬链接了这两个位置,然后错误就解决了。

我从这里输入链接描述得到了这个答案。


0

我也遇到了同样的问题。在卸载并重新安装mysql后,出现了这个问题。

注意:你的数据将被删除!不幸的是,当mysql出现故障时,我没有找到备份mysql文件的方法(如果您知道如何备份,请在评论中说明)。
只有在您的mysql数据对您不重要时才使用此方法(就像我在尝试在新安装的操作系统中安装mysql时一样)。

问题:

问题的原因是什么?首先,我使用了apt remove重新安装mysql,但这导致mysql出现错误:

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

解决方法:

然后我使用了purge命令重新安装mysql,它起作用了:

  • sudo apt purge mysql*(这将清除所有数据!);
  • sudo apt autoremove
  • sudo apt install mysql-server(添加所需的应用程序!)
  • 完成这些步骤后,只需运行sudo mysql -u root


    这个解决方案适用于MySQL 5.7.x版本吗?我问这个问题是因为当你安装mysql-server包时,它总是默认安装MySQL 8.x版本。 - NikolaS

    0
    在我的情况下,出现了完全相同的错误,因为我错误地安装了mysql-server,而mariadb-server已经安装好了。
    尝试了很多方法,经过2个小时的努力,我的解决方案是卸载mysql-server并重新安装mariadb-server

    0
    如果你遇到了“Unit mysql.service not found”错误,你应该安装“sudo apt-get install mysql-server”。

    0

    我在一个 Docker 容器中运行 mysql(Ubuntu 22.04)。对我来说解决方案是按照以下步骤停止和启动 mysql:

    root@9178d9792221:/# mysql
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
    
    root@9178d9792221:/# /etc/init.d/mysql stop
     * Stopping MySQL database server mysqld                                                                                                                                                                                                [ OK ] 
    root@9178d9792221:/# /etc/init.d/mysql start
     * Starting MySQL database server mysqld                                                                                                                                                                                                       su: warning: cannot change directory to /nonexistent: No such file or directory
                                                                                                                                                                                                                                            [ OK ]
    root@9178d9792221:/# mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 10
    Server version: 8.0.33-0ubuntu0.22.04.1 (Ubuntu)
    
    Copyright (c) 2000, 2023, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> quit
    Bye
    

    就这样,问题解决了。


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