/var/run/mysqld/mysqld.sock'(2) & # 39;——缺少/var/run/mysqld/mysqld.sock

我的问题开始与我不能登录根在我的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

我是Linux和MySQL的新手,所以我不知道这是否正常。但我把这些信息也包括进来,以防有用。

我最终决定卸载并重新安装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。但我注意到它并没有提示我输入密码。它不是应该要求输入管理员密码吗?

1902956 次浏览

查找系统中所有的套接字文件:

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 mysqlps aux | grep mysql | grep -v grep找到mysql的进程号
      • 假设进程id是4969,用kill -9 4969终止
      • 李< / ul > < / > 李< / ul > < / >

      在你这样做之后,你可能想要在/var/run/mysqld/中寻找一个pid文件并删除它

      确保套接字上的权限是这样的,无论运行mysqld的用户可以读/写它。一个简单的测试是将其打开到完全读/写,看看它是否仍然有效:

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

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

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

我遇到同样的错误,发现这是由于升级包,所以重新启动我的系统后,我解决了错误。

我认为由于sql库/包更新发生了错误,所以如果你正在进行一些升级,请尝试一下:)

解决方法简单多了。

  1. 首先,你必须定位(在终端中使用"sudo find / -type s")你的mysql.sock文件所在的位置。在我的情况下,它在/opt/lampp/var/mysql/mysql.sock
  2. 启动终端并发出 sudo Nautilus < br > 这将以超级用户权限
  3. 启动文件管理器
  4. 从Nautilus导航到mysql.sock文件所在的位置
  5. 右键单击文件并选择做链接
  6. 将链接文件重命名为mysqld.sock,然后右键单击该文件并减少
  7. 转到/var/run,创建一个名为mysqld的文件夹并输入它
  8. 现在右击并粘贴链接文件
  9. 瞧!你现在会在/var/run/mysqld/mysqld.sock处有一个mysqld.sock文件:)
如果你已经安装了mysql-server,你可以在/var/run/mysqld中找到mysqld.socksudo apt-get install mysql-server < / p >

这应该在终端中完成,在服务器内部,当你的mysql数据库没有正确安装,当你得到这个错误:'无法连接到本地mysql服务器通过套接字'/var/run/mysqld/mysqld。袜子(2)。

停止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
在/etc/mysql/my.cnf目录下找到my.cnf文件 (相应地改变它表示socket的位置)

port            = 3306
socket          = /tmp/mysql.sock

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

它的正式名称是[safe_mysqld]。两个版本目前都进行了解析。

[mysqld_safe]
socket          = /tmp/mysql.sock
nice            = 0
在我的情况下,两个mysqld进程正在运行.. 使用杀死可选进程 mysqld

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

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

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

有时是由于mysql服务器宕机,在live服务器我认为你应该重新启动服务器,也在localhost你需要重新启动mysql服务器。

如果你的系统上有很多数据库和表,如果你在my.cnf中设置了innodb_file_per_table,那么你的mysql服务器可能已经用光了打开的对象/文件(或者更确切地说,这些对象的描述符) 用

设置一个新的最大值
open-files-limit = 2048
重启mysql。 当套接字根本没有创建时,这种方法可能会有所帮助,但实际上这可能不是真正的问题,这是一个潜在的问题

试试这个命令,

sudo service mysql start

*错误:“不能通过套接字连接到本地MySQL服务器/ var /跑步/ mysqld / mysqld。袜子”(2)“

解决方案

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

  • 删除mysql-server
  • 删除mysql客户端
  • Sudo apt-get remove mysql-common
  • Sudo apt-get删除phpmyadmin

然后重新安装

  • 安装mysql-server-5.6

该操作将额外占用164mb的磁盘空间。

  • 你想继续吗?[Y/n] Y按YES完成安装
< p >…… …< / p >
  • 最后你会得到这些行....

    设置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)的触发器…

  • < p >

    root@ubuntu1404:~# mysql -u root -p 应该使用)

  • 输入密码:

  • 备注:输入的密码必须与安装时间一致 mysql的密码(如。root,system,admin,rahul等)

    然后输入< / p >

  • 使用rahul_db(数据库名);

谢谢。* *

由于多次安装mysql而出现此错误。 执行命令:

ps -A|grep mysql

通过以下命令终止进程:

sudo pkill mysql

然后运行命令:

ps -A|grep mysqld

也可以通过运行:

sudo pkill mysqld

现在你已经完全设置好了,只需运行以下命令:

service mysql restart
mysql -u root -p

又有很好的工作mysql吗

临时解决方案

也许有人正面临这个问题。我在Ubuntu 14上使用Mysql工作台,得到了这个错误。

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下。查看其他永久解决方案的答案。

这个问题有很多原因,但有时只要重新启动mysql服务器,它就会解决这个问题。

sudo service mysql restart

host更改为127.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

我在Ubuntu的虚拟机上运行我的MySQL,所以当我重启我的主机和虚拟机时,IP发生了变化。我已经配置mysql在IP 192.168.0.5上运行,现在由于IP的动态分配,我的新IP是192.168.0.8

如果你有同样的问题,用ifconfig命令检查你的ip。

使用命令cat /etc/mysql/my.cnf | grep bind-address检查你的MySQL绑定

如果两个IP相同,请重新安装mysql服务器

如果不是,那么在/etc/network/interfaces中使用nano, vi, vim或任何你喜欢的东西更改你的IP。

我更喜欢sudo nano /etc/network/interfaces

并输入以下内容

auto eth0
iface eth0 inet static
address 192.168.0.5
netmask 255.255.255.0

保存接口文件,重新启动接口sudo ifdown eth0 &&sudo ifup eth0将“eth0”替换为网络接口

重新启动MySQL sudo service mysql stopsudo service mysql start

如果你和我有同样的问题,你可以去!

这个解决方案可以帮助其他人,有时修复非常简单。

在您的活动环境中重新启动mysql服务器和apache

sudo service mysql restart
sudo apache services restart

当您安装插件或执行任何数据库命令时,这是一个常见问题。

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

mysql-server不再安装了(不知何故它已经被删除了),但我不能只是安装它,因为有一些损坏的包和依赖关系问题/冲突。

最后我不得不重新安装mysql

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

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 < / p >

这对我很有效

我还会检查mysql配置。我在自己的服务器上遇到了这个问题,但我有点太草率了,错误地为我的机器配置了innodb_buffer_pool_size。

innodb_buffer_pool_size = 4096M

它通常可以正常运行到2048年,但我想我没有支持4g所需的内存。

我想这也可能发生在其他mysql配置设置。

这一点已经被提到过几次了,但这对我来说立即起了作用:

Service mysql restart

安装完成后启动MySQL服务:

Ubuntu的:

sudo service mysql start;

对于CentOS或RHEL:

sudo service mysqld start;

在archlinux上,我遇到了这个错误,问题是mysqld-service没有运行。

然而,我不能像Archlinux文档中所指示的那样,使用systemctl start mysqld启用mysql-service。我想这个错误是

mysqld。未找到服务

我首先需要重新启动系统。

然后我再次输入命令(并输入systemctl enable mysqld),现在mysql能够找到创建的mysql.sock

当我在数字海洋上调整液滴大小时,我有这种类型的问题。我已经升级了mysql版本,适合我。这是我应用的教程- https://serverpilot.io/community/articles/how-to-upgrade-mysql-5.5-to-5.6-on-ubuntu-14.04.html

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

在lampp中,正如我所认识的,它不识别mysql命令。 试着与< / p >

sudo /opt/lampp/bin/mysql

它将打开mysql终端,在那里你可以与数据库通信。

在我的情况下,问题是在/etc/mysql/my.cnf中的绑定地址,然后:

纳米/etc/mysql/my.cnf

搜索绑定地址并删除特定的主机IP(不是127.0.0.1)

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

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

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

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

innodb_force_recovery = X

将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)中添加的行。

6)恢复所有bd的倾倒在3)。

好运!

< p > mysql。sock文件在MariaDB启动时创建,在MariaDB关闭时删除。如果MariaDB不运行,它就不存在。 也许你没有安装MariaDB。 你可以按照下面的说明操作: https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 最好的< / p >

在ubuntu上使用XAMPP:

  1. /var/run目录内创建一个名为mysqld的文件夹。你可以使用命令sudo mkdir /var/run/mysqld来实现。

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

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

  1. 启动服务器(如果服务器尚未运行),并尝试再次执行您的程序。

好运!我希望你这次能逃脱惩罚。

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

sudo mysql

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

Mysql 5.7修改了一些东西,默认使用auth_socket插件(而不是mysql_native_password)作为root来保护帐户不被黑客攻击。你可以通过为root设置插件字段来覆盖这个保护,但是除非你有很好的理由,否则你可能不应该绕过这个保护。尤其是当sudo mysqlmysql -u root -p简单的时候。

我从一个覆盆子π帮助网站上找到了这个信息。在Lubuntu 18.04让我烦了几个小时后,效果很好。

我在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服务器。

< p >编辑: 最近我安装了Ubuntu 20.04,并试图安装MySQL服务器,但我的系统崩溃了,根本无法工作。所以我刚刚完全删除了MySQL,安装了MariaDB。

首先创建目录/var/run/mysqld

用命令:

mkdir -p /var/run/mysqld

然后给dir添加权限

chown mysql:mysql /var/run/mysqld

在这次尝试之后

mysql -u root

我想你的MySQL服务器还没有启动。因此,使用以下命令之一启动服务器。

#services mysql start

#/etc/init.d/mysql start

有时只是服务器上没有足够的空间,释放一些空间(比如清除日志文件),然后启动mysql:

/etc/init.d/mysql start

我也有同样的问题。在挣扎了一个小时后,我找到了一种无需重新安装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

你会发现它工作得很好!而且阻止它也没有问题。

请确保您无法访问的套接字文件路径与'/var/run/mysqld/mysqld '相同。Sock ',否则改变你的路径。 停止mysqld

. sh
$ sudo /etc/init.d/mysqld stop

如果进程仍在运行;

$ sudo pkill -9 mysqld

删除将要创建socket的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

我的解决方案;

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年的例子

为什么会出现这个错误

我收到了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

从那以后,一切都为我解决了。

我的情况是,/etc/目录中的mysql被重命名为mysql_bk,只需复制mysql_bk即可

sudo cp -r /etc/mysql_bk/ /etc/mysql/

然后

service mysql restart

与你们分享一下,我遇到过同样的问题,使用下面的命令解决了

Sudo ln -s /var/lib/mysql/mysql.袜子/var/run/mysqld/mysqld.sock

我硬链接两个位置从my.cnf和错误

我得到了这个答案 在这里输入链接描述 < / p >

对于那些通过维塔斯使用MySql的人。

我在vttablet组件收到此错误,由于语法错误(忘记将;添加到SQL命令的末尾)传递给init_db.sql,在开始文档中给出例子:

apiVersion: v1
kind: Secret
metadata:
name: my-cluster-config
type: Opaque
stringData:
users.json: |
{
"user": [{
"UserData": "user",
"Password": "pass"
}]
}
init_db.sql: |
# This file is executed immediately after mysql_install_db,
# to initialize a fresh data directory.
CREATE DATABASE IF NOT EXISTS my_db <--- No ';' at the end

完整的错误日志:

TabletManager.ReplicationStatus()(on zone1from) error: net.Dial(/vt/socket/mysql.sock) to local server失败 / vt /套筒/ mysql。Sock: connect:没有这样的文件或目录(errno 2002)

您必须安装mysql-server

apt install mysql-server

我也有同样的问题。在删除和重新安装mysql后,这个问题确实发生了。

谨慎:你的数据将是解决!!不幸的是,我没有找到一种方法来备份mysql文件时,mysql是坏的(如果你知道这样做的方法,请注意在评论)。
如果你在mysql中的数据对你来说不重要(就像我在尝试在新安装的操作系统中安装mysql时),请使用此方法

问题:

是什么导致了这个问题?首先,我使用apt remove重新安装mysql,但这个工作导致mysql错误:

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

解决办法:

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

  1. sudo apt purge mysql*(这将清除你所有的数据!);
  2. sudo apt autoremove
  3. sudo apt install mysql-server(添加你需要的应用程序!)

完成这些步骤后,只需运行sudo mysql -u root

唯一对我有用的是从我的系统中卸载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

如果你有"Unit mysql。服务未找到”;错误,请安装“sudo apt-get install mysql-server”;

'/var/run/mysqld/mysqld.sock' (2)' on pop os

如果你吃了pop-os,就这么做

删除和清除之前安装的mysql服务器。然后按如下方式安装并配置。

sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation
我也有同样的问题,几个小时后我发现了这个: 我将它添加到路径/etc/mysql/my.cnf

[mysql]
innodb_force_recovery = 1

如果你使用mysqld,请使用以下语句:

[mysqld]
innodb_force_recovery = 1