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

2024-09-30 15:23:00
admin
原创
427
摘要:问题描述:我的问题始于我无法再以 root 身份登录我的 mysql 安装。我试图在不开启密码的情况下运行 mysql...但每当我运行命令时# mysqld_safe --skip-grant-tables & 我再也没有得到提示。我试图按照这些说明来恢复密码。屏幕看起来就像这样:root@...

问题描述:

我的问题始于我无法再以 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-server,然后mysql-client再次尝试。但我注意到它没有提示我输入密码。它不是应该要求输入管理员密码吗?


解决方案 1:

尝试这个命令,

sudo service mysql start

解决方案 2:

要查找系统上的所有套接字文件,请运行:

sudo find / -type s

我的 Mysql 服务器系统在/var/lib/mysql/mysql.sock

找到打开套接字的位置后,在 /etc/my.cnf 文件中添加或编辑套接字文件路径所在的行:

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

有时启动命令行可执行文件的系统启动脚本会指定一个标志--socket=path。此标志可能会覆盖 my.cnf 位置,从而导致套接字在 my.cnf 文件指示的位置找不到。然后,当您尝试运行 mysql 命令行客户端时,它将读取 my.cnf 以查找套接字,但找不到它,因为它偏离了服务器创建套接字的位置。因此,除非您关心套接字所在的位置,否则只需更改 my.cnf 以匹配即可。

然后,停止 mysqld 进程。具体操作方法因系统而异。

如果您是 Linux 系统的超级用户,并且不知道 Mysql 设置使用的具体方法,请尝试以下操作之一:

  • service mysqld stop

  • /etc/init.d/mysqld stop

  • mysqladmin -u root -p shutdown

  • 有些系统没有设置优雅的方式来停止 mysql(或者由于某种原因 mysql 没有响应),你可以使用以下任一方式强制终止 mysql:

+ 一步:`pkill -9 mysqld`
+ 两步(最不推荐):


    - `pgrep mysql`使用或查找 mysql 的进程 ID`ps aux | grep mysql | grep -v grep`
    - 假设进程 ID`4969`终止于`kill -9 4969`

完成此操作后,您可能需要查找 pid 文件/var/run/mysqld/并将其删除

确保套接字上的权限使得任何运行 mysqld 的用户都可以对其进行读取/写入。一个简单的测试是将其开放为完全读取/写入,看看它是否仍然有效:

chmod 777 /var/run/mysqld/mysqld.sock

如果问题得到解决,您可以根据安全设置根据需要定制套接字的权限和所有权。

此外,运行 mysqld 进程的用户必须能够访问套接字所在的目录。

解决方案 3:

这个错误是因为安装了多次mysql导致的,运行命令:

ps -A|grep mysql

使用以下命令终止该进程:

sudo pkill mysql

然后运行命令:

ps -A|grep mysqld

也可以通过运行以下命令终止该进程:

sudo pkill mysqld

现在您已完全设置完毕,只需运行以下命令:

service mysql restart
mysql -u root -p

mysql 再次正常运行

解决方案 4:

解决办法更加简单。

  1. 首先,你必须找到(在终端中使用“sudo find / -type s”)mysql.sock文件所在的位置。在我的例子中,它位于/opt/lampp/var/mysql/mysql.sock

  2. 启动终端并输入
    sudo Nautilus

这将以超级用户权限启动你的文件管理器

  1. 从 Nautilus 导航到mysql.sock文件所在的位置

  2. 右键单击文件并选择“创建链接”

  3. 将链接文件重命名为,mysqld.sock然后右键单击文件并剪切

  4. 转到/var/run并创建一个名为的文件夹mysqld并输入它

  5. 现在右键单击并粘贴链接文件

  6. 瞧!您现在将拥有一个mysqld.sock文件/var/run/mysqld/mysqld.sock:)

解决方案 5:

安装后只需启动 MySQL 服务:

对于 Ubuntu:

sudo service mysql start;

对于 CentOS 或 RHEL:

sudo service mysqld start;

解决方案 6:

Ubuntu 上的 MySQL 5.6 和 5.7 有一个错误,var/run/mysqld/当 MySQL 服务停止或重新启动时,它就会消失。这根本阻止了 MySQL 运行。找到了这个解决方法,虽然并不完美,但至少在停止/重新启动后可以运行:

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/

解决方案 7:

确保无法访问的套接字文件路径与“/var/run/mysqld/mysqld.sock”相同,否则请将路径更改为您的路径。停止 mysqld

$ sudo /etc/init.d/mysqld stop

如果进程仍在运行;

$ sudo pkill -9 mysqld

删除将要创建套接字的 mysql 目录。对我来说,它不允许删除,所以我不得不强制删除。

$ sudo mkdir -p /var/run/mysqld

将所有权设置为目录

$ sudo chown mysql:mysql /var/run/mysqld

启动mysql

$ sudo /etc/init.d/mysql start

尝试连接 mysql

$ sudo mysql -u dbuser -p

解决方案 8:

好的,只需复制并粘贴这些代码:这应该在终端中、服务器内部完成,当您的 mysql 数据库未正确安装时,并且当您收到此错误时:“无法通过套接字‘/var/run/mysqld/mysqld.sock’(2) 连接到本地 MySQL 服务器”。

停止 MySql

sudo /etc/init.d/mysqld stop

重新启动或启动它

sudo /etc/init.d/mysqld restart or sudo /etc/init.d/mysqld start

创建一个这样的链接并将其提供给系统

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

运行安全安装,它将指导您配置 mysql 所需的所有过程

/usr/bin/mysql_secure_installation

解决方案 9:

我遇到了同样的错误,发现这是由于软件包升级造成的,因此重新启动系统后我解决了错误。

我认为由于 sql 库/包更新导致出现错误,所以如果您正在进行升级,请尝试一下这个:)

解决方案 10:

为什么会出现这个错误

我收到了 mysql 库的新更新,因此我更新了我的 Kubuntu 操作系统,之后出现了这些错误。


我尝试过的命令以及我如何修复它。

MySql-server 运行正常,但当我尝试连接时,它给出

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'.

我检查了/var/run/mysqld/mysqld.sock'.这个目录。我的文件不存在。

我也尝试过这些命令来连接,但是没有用。

 mysql -h 127.0.0.1 -P 3306 -u root -p

 sudo service mysql start

浪费了大约2 个小时后,我找到了解决方案

sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade -f

此后,一切都对我来说解决了。

解决方案 11:

用户加载步骤的答案对我有用。有时需要编辑文件以将/etc/mysql/my.cnf行添加到客户端

[client]
password = your_mysql_root_password
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

解决方案 12:

造成此问题的原因有很多,但有时只需重新启动 mysql 服务器,即可解决问题。

sudo service mysql restart

解决方案 13:

临时解决方案

也许有人面临这个问题。我在Ubuntu 14上使用Mysql Workbench并出现此错误。

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

通过运行找到你的套接字文件sudo find / -type s,在我的情况下它是/run/mysqld/mysqld.sock

tmp因此,我刚刚在目录中创建了指向该文件的链接。

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

请注意,这是一个临时解决方案,因为创建的文件将位于 下/tmp。请参阅其他答案以获取永久解决方案。

解决方案 14:

我认为您的 MySQL 服务器尚未启动。因此,请使用以下命令之一启动服务器。

#services mysql start

或者

#/etc/init.d/mysql start

解决方案 15:

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

解决方案

最后卸载并重新安装 mysql。**

  • sudo apt-get 删除 mysql 服务器

  • sudo apt-get 删除 mysql 客户端

  • sudo apt-get 删除 mysql-common

  • sudo apt-get 删除 phpmyadmin

然后再次安装

  • sudo apt-get 安装 mysql-server-5.6

此操作后,将使用164 MB的额外磁盘空间。

  • 您想继续吗?[Y/n] Y 按 YES 完成安装

...... ......

  • 最后你会得到这些线条......

设置 libhtml-template-perl (2.95-1) ...

设置 mysql-common-5.6 (5.6.16-1~exp1)... 处理 libc-bin (2.19-0ubuntu6) 的触发器 处理 ureadahead (0.100.0-16) 的触发器...

  • 进而

root@ubuntu1404:~# mysql -u root -p(对于每个密码,首先应该使用)

  • 输入密码:

  • 注意:输入的密码应该与mysql安装时的密码相同(如.root,system,admin,rahul等...)

然后输入

  • 使用 rahul_db(数据库名称);

谢谢。**

解决方案 16:

在 Ubuntu 上使用 XAMPP:

  1. /var/run目录中创建一个名为mysqld的文件夹。您可以使用以下命令完成此操作。sudo mkdir /var/run/mysqld

  2. 创建XAMPP 服务器启动时创建的mysql.sock文件的符号链接。您可以使用命令sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock

注意:mysql.sock文件在服务器启动时创建,在服务器停止时被删除,因此有时您创建的链接可能看起来已损坏,但只要您使用任何sudo /opt/lampp/lampp start其他方式启动服务器,它就应该可以工作。

  1. 如果服务器尚未运行,请启动它并尝试再次执行程序。

祝你好运!希望你这次能成功。

解决方案 17:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

添加/etc/my.cnf以下几行:

[client]
socket=/var/lib/mysql/mysql.sock <= this path should be also same as is[mysqld]

并使用以下命令重新启动服务:
service mysql restart

这对我有用

解决方案 18:

这个问题已经提到过几次了,但对我来说这个立即就起作用了:

服务 mysql 重启

解决方案 19:

我遇到了完全相同的问题。经过一个小时的努力,我找到了一种无需重新安装 mysql-common、mysql-client、mysql-server 即可解决问题的方法。

首先,进入“/var/run/mysqld”。你会发现mysql.sock不存在。只需删除整个mysqld目录并重新创建,并为其提供必要的权限即可。

# rm -rf /var/run/mysqld && mkdir /var/run/mysqld && chown mysql /var/run/mysqld/

现在,彻底终止 mysql 进程。即使关闭服务后,运行“/etc/init.d/mysql status”命令时,也可能显示“正在等待页面清理”。

要完全关闭服务,请使用

# pkill -9 mysqld

一旦进程被终止,请尝试使用以下命令重新启动它

# /etc/init.d/mysql start

你会发现它运行良好!而且停止它也不会有问题。

解决方案 20:

如果你已经安装了,
你可以mysqld.sock找到/var/run/mysqld`mysql-server`sudo apt-get install mysql-server

解决方案 21:

我刚刚在 Ubuntu 14.10 上遇到了这个问题

原来它mysql-server不再安装(不知何故已被删除)但我无法安装它,因为存在一些损坏的包和依赖问题/冲突。

最后我不得不重新安装mysql

sudo apt-get remove mysql-client
sudo apt-get install mysql-server

解决方案 22:

我的解决方案;

Ubuntu 18.04(WSL)

/etc/mysql/my.cnf

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306

我更改了端口。对我来说没问题。你可以写另一个端口。例如 3355

解决方案 23:

我在 Ubuntu 上使用 XAMPP。我在通过终端连接数据库时发现了这个错误。我无需任何配置就可以解决这个问题,因为 XAMPP 中的默认套接字文件路径写在“/opt/lampp/etc/my.cnf”中,如下所示:

[client]
#password   = your_password
port        = 3306
socket      = /opt/lampp/var/mysql/mysql.sock

现在您只需在终端上使用 mysql 命令提供此套接字路径参数即可进行连接,例如:

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

并且无需任何配置即可完成。

如果你不想每次都输入套接字路径,那么可以通过“/var/run/mysqld/mysqld.sock”更改 my.cnf 中的默认路径。提供权限并重新启动 mysql 服务器。

编辑:最近我安装了 Ubuntu 20.04 并尝试安装 MySQL 服务器,但我的系统崩溃了,根本无法工作。所以我完全删除了 MySQL 并安装了 MariaDB。它运行良好,没有任何问题。

解决方案 24:

您必须安装 mysql-server

apt install mysql-server

解决方案 25:

在我的例子中,有两个 mysqld 进程正在运行..使用 pkill -9 mysqld 终止可选进程

解决方案 26:

如果你的系统上有很多数据库和表,并且你已经innodb_file_per_table在 my.cnf 中设置了,那么你的 mysql 服务器可能已经用完了打开的对象/文件(或者更确切地说是这些对象的描述符)。使用以下命令设置新的最大数量:

open-files-limit = 2048

然后重启 mysql。当套接字根本没有创建时,这种方法可能会有所帮助,但实际上这可能不是真正的问题,存在一个潜在的问题。

解决方案 27:

更改host127.0.0.1对我有用。

编辑该文件/etc/mysql/my.cnf并将下面提到的行添加到该部分:client

[client]
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

完成后,执行以下命令。

sudo service mysql start

解决方案 28:

我在 CentOS VPS 上遇到了类似的问题。如果 MySQL 无法启动或在启动后立即崩溃,请尝试以下步骤:

1)找到my.cnf文件(我的位于/etc/my.cnf)并添加以下行:

innodb_force_recovery = 否

将 X 替换为 1 到 6 之间的数字,从 1 开始,如果 MySQL 无法启动则递增。设置为 4、5 或 6 可能会删除您的数据,因此请小心谨慎,并先阅读http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html

2) 重新启动 MySQL 服务。此时只有 SELECT 会运行,这是正常的。

3)使用 mysqldump 逐个转储所有数据库/模式,不要压缩转储,因为无论如何您稍后都必须解压缩它们。

4)仅移动(或删除!)/var/lib/mysql 内的 bd 目录,保留根目录中的各个文件。

5) 停止 MySQL,然后取消注释1) 中添加的行。启动 MySQL。

6)恢复3)中转储的所有bd。

祝你好运!

解决方案 29:

我在 Ubuntu 16.04 中卸载了 mysql https://askubuntu.com/questions/172514/how-do-i-uninstall-mysql

我重新安装了 mysql
https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04

这似乎有效。

解决方案 30:

在终端提示符下尝试以下操作:

sudo mysql

一旦允许您进入,您可以创建一个新用户并授予他们需要访问的特定数据库的权限。

Mysql 5.7 更改了一些功能,默认情况下,root 使用 auth_socket 插件(而不是 mysql_native_password)来保护帐户免遭黑客攻击。您可以通过为 root 设置插件字段来覆盖此功能,但除非您有非常充分的理由,否则您可能不应该规避保护。尤其是当sudo mysql这比mysql -u root -p无论如何都更容易的时候。

我在Raspberry Pi帮助网站上找到了这些信息。在 Lubuntu 18.04 让我烦了好几个小时后,它就变得非常好用了。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1043  
  IPD(Integrated Product Development,集成产品开发)是一种系统化的产品开发方法论,旨在通过跨职能团队的协作,优化产品开发的效率和质量。IPD流程强调从市场需求出发,通过并行工程、跨部门协作和阶段性评审,确保产品从概念到上市的每个环节都高效且可控。随着敏捷开发方法的普及,越来越多的企业开始...
华为IPD流程   41  
  随着企业产品开发复杂度的提升以及市场需求的快速变化,传统的产品开发模式逐渐显现出局限性。集成产品开发(IPD)流程与敏捷开发(Agile Development)作为两种主流的开发方法论,分别从系统化管理和快速响应需求的角度为企业提供了解决方案。然而,单独使用其中一种方法往往无法完全满足企业在效率、质量和创新上的多重需...
华为IPD流程   35  
  华为IPD(Integrated Product Development,集成产品开发)流程是华为公司成功的关键因素之一。它不仅帮助华为在技术上实现了快速创新,还通过市场导向确保了产品的商业成功。IPD流程通过整合技术与市场双驱动,实现了从需求定义到产品交付的全生命周期管理。这种模式不仅提高了产品的开发效率,还降低了市...
IPD流程中PDCP是什么意思   32  
  在研发领域,集成产品开发(IPD)流程已经成为企业提升创新效率和市场竞争力的重要手段。然而,资源分配的不合理往往是制约IPD流程效率的关键因素之一。无论是人力资源、财务资源还是技术资源,如何高效分配直接关系到项目的成功与否。优化资源分配不仅能够缩短产品开发周期,还能降低研发成本,提升产品的市场竞争力。因此,掌握资源分配...
IPD流程中CDCP   34  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用