当前位置: 首页>>技术教程>>正文


错误:’Can’t通过套接字连接到本地MySQL服务器’/var/run/mysqld/mysqld.sock'(2)’ – 缺少/var/run/mysqld/mysqld.sock

, ,

问题描述

我的问题开始于我无法在我的mysql安装上以root用户身份登录。我试图在没有打开密码的情况下运行mysql …但每当我运行命令时

# mysqld_safe --skip-grant-tables &

我永远不会得到提示。我试图关注these instructions to recover the password

屏幕看起来像这样:

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。但我注意到它没有提示我输入密码。是不是应该要求管理员密码?

最佳解决方法

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

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

      • 假设进程ID为4969,则以kill -9 4969终止

执行此操作后,您可能希望在/var/run/mysqld/中查找pid文件并将其删除

确保套接字上的权限是这样的,即任何用户mysqld正在运行,因为它可以读/写它。一个简单的测试是打开它以完全读/写,看看它是否仍然有效:

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

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

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

次佳解决方法

试试这个命令,

sudo service mysql start

第三种解决方法

由于多次安装mysql而发生此错误。运行命令:

ps -A|grep mysql

使用以下方法终止进程:

sudo pkill mysql

然后运行命令:

ps -A|grep mysqld

同时运行以下命令终止此过程:

sudo pkill mysqld

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

service mysql restart
mysql -u root -p

有很好的工作mysql了

第四种方法

解决方案更容易。

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

  2. 启动终端并发出sudo Nautilus这将启动具有超级用户权限的文件管理器

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

  4. 右键单击该文件,然后选择“生成链接”

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

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

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

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

第五种方法

安装后只需启动MySQL服务:

对于Ubuntu:

sudo service mysql start;

对于CentOS或RHEL:

sudo service mysqld start;

第六种方法

好吧,只需复制并粘贴这些代码:这应该在终端,服务器内部,当你的mysql数据库没有正确安装时,以及当你收到这个错误时:’Can’t通过套接字连接到本地MySQL服务器’/var/run/mysqld/mysqld.sock'(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

第七种方法

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

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

第八种方法

Ubuntu上有一个带有MySQL 5.6和5.7的错误,只要MySQL服务停止或重新启动,var/run/mysqld/就会消失。这可以防止MySQL运行。找到这个解决方法,这不是完美的,但至少它在停止/重启后运行:

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

第九种方法

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

sudo service mysql restart

第十种方法

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

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6334.html,未经允许,请勿转载。