错误:‘无法通过套接字‘/var/run/mysqld/mysqld.sock’(2) 连接到本地 MySQL 服务器’--缺少 /var/run/mysqld/mysqld.sock
- 2024-09-30 15:23:00
- admin 原创
- 426
问题描述:
我的问题始于我无法再以 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:
解决办法更加简单。
首先,你必须找到(在终端中使用“sudo find / -type s”)
mysql.sock
文件所在的位置。在我的例子中,它位于/opt/lampp/var/mysql/mysql.sock
启动终端并输入
sudo Nautilus
这将以超级用户权限启动你的文件管理器
从 Nautilus 导航到
mysql.sock
文件所在的位置右键单击文件并选择“创建链接”
将链接文件重命名为,
mysqld.sock
然后右键单击文件并剪切转到
/var/run
并创建一个名为的文件夹mysqld
并输入它现在右键单击并粘贴链接文件
瞧!您现在将拥有一个
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:
在/var/run目录中创建一个名为mysqld的文件夹。您可以使用以下命令完成此操作。
sudo mkdir /var/run/mysqld
创建XAMPP 服务器启动时创建的mysql.sock文件的符号链接。您可以使用命令
sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock
。
注意:mysql.sock文件在服务器启动时创建,在服务器停止时被删除,因此有时您创建的链接可能看起来已损坏,但只要您使用任何
sudo /opt/lampp/lampp start
其他方式启动服务器,它就应该可以工作。
如果服务器尚未运行,请启动它并尝试再次执行程序。
祝你好运!希望你这次能成功。
解决方案 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:
更改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
解决方案 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 让我烦了好几个小时后,它就变得非常好用了。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)