【问题标题】:Resetting MySQL password & missing mysqld.sock file重置 MySQL 密码 & 缺少 mysqld.sock 文件
【发布时间】:2016-10-31 21:23:20
【问题描述】:

我正在尝试在我自己的计算机上运行本地 mysql 服务器。我丢失了最初设置的密码。当我尝试连接到 mysql 时,出现以下错误:

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

因此,我尝试these steps 重置我的 MySQL 密码,但是这条线

mysql -u root mysql

返回相同的错误信息:

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

运行命令时

mysqladmin -u root -p 状态 我收到以下消息: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

检查 mysqld 是否正在运行,并且套接字:'/var/run/mysqld/mysqld.sock' 存在!

我一直在检查,提到的文件 (/var/run/mysqld/mysqld.sock) 实际上并不存在。我不确定是什么原因造成的。

我在网上尝试了几个解决方案,包括thisthisthisthis,但这些解决方案都不适合我。我想补充一点,我的机器上安装了 mysql-server。

任何帮助表示赞赏。如果对上述陈述有任何混淆,请接受我的歉意。我试图尽可能多地解释正在发生的事情,但我是初学者,对那里发生的事情一无所知。

【问题讨论】:

  • 看起来 MySQL 服务器没有运行。
  • 尝试用这些命令启动它...coolestguidesontheplanet.com/…
  • @FredericoFalcao 谢谢,但是据我了解,“sudo /etc/init.d/mysql stop”行确实会停止服务器,这是重置密码所必需的。我弄错了吗?
  • @HareshKumar 我昨天尝试了这个解决方案,但没有成功。提出的第一个解决方案的第 1 到第 4 行工作正常(我只需要用“authentication_string”替换“password”作为解释here,但我今天仍然遇到问题。

标签: mysql sockets


【解决方案1】:

1) 使用此命令停止 mysql 恶魔进程:

sudo /etc/init.d/mysql stop

2) 使用该命令的 --skip-grant-tables 选项启动 mysqld 恶魔进程

sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

因为此时您没有检查用户权限,所以最安全的是 禁用网络。在 Dapper 中,/usr/bin/mysqld... 不起作用。 但是,mysqld --skip-grant-tables 做到了。

1) 使用该命令启动mysql客户端进程

mysql -u root

2) 在 mysql 提示符下执行此命令可以更改任何密码

FLUSH PRIVILEGES;

3) 然后重置/更新您的密码

SET PASSWORD FOR root@'localhost' = PASSWORD('password');

4) 如果你有一个可以从任何地方连接的 mysql root 帐户,你也应该这样做:

UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';

一旦收到指示查询成功(受影响的一个或多个行)的消息,刷新权限:

FLUSH PRIVILEGES;

然后停止mysqld进程并以经典方式重新启动它:

sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

这是从https://help.ubuntu.com/community/MysqlPasswordReset借来的,你也可以看看另一种重置mysql密码的方法。

【讨论】:

  • 执行步骤1-4后,您需要执行FLUSH PRIVILEGES;并重新启动mysql守护进程。
  • 谢谢,我已经尝试过这种方法,但是在mysql -u root 之后我得到了错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 我无法解决。
  • 我尝试了清除解决方案,但行 mysqladmin -u root password your-new-password 不会运行:mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'。至于sudo dpkg-reconfigure mysql-server-N.N(我的版本是5.7),好像没什么用。我得到Checking if update is needed.This installation of MySQL is already upgraded to 5.7.12, use --force if you still need to run mysql_upgrade
  • 最后一个链接修复了它!看起来我到处都有 my.cnf 文件。一步一步做就解决了。非常感谢:)
【解决方案2】:

看起来您的 MySQL 服务器根本没有运行。 可以查一下吗?

service mysql status

您需要尝试重新启动它,并确保您可以使用停止和启动它

service mysql stop
service mysql start

如果您有任何错误,请在此处发布。

【讨论】:

  • 这个答案与上一个有什么不同?
【解决方案3】:

重新安装 mysql-server 对我有用。 (我使用的是 mysql 5.7)

sudo wget http://repo.mysql.com/mysql-apt-config_0.8.9-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.9-1_all.deb
sudo apt-get update
sudo apt-get install mysql-server
mysql_secure_installation

【讨论】:

    【解决方案4】:

    首先杀死用户

    sudo pkill -u <user>
    

    然后安装mysql服务器

    sudo apt install mysql-server
    

    配置它

    sudo mysql_secure_installation
    

    进入mysql shell

    sudo mysql
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-03
      • 2018-10-17
      • 2019-05-13
      • 2014-08-14
      • 2012-02-08
      • 2011-12-17
      • 2018-06-09
      • 1970-01-01
      相关资源
      最近更新 更多