【问题标题】:How to reset a lost mysql root password如何重置丢失的mysql root密码
【发布时间】:2015-12-07 08:36:31
【问题描述】:

我已经对如何重置 mySQL 根密码进行了一些研究,但是当我尝试运行此命令时:

sudo stop mysql

它输出:stop unknown instance

然后我尝试运行:

# mysqld_safe --skip-grant-tables &

我得到:A mysqld process already exists

更新:

尝试了建议的其他方式并遇到此错误:

【问题讨论】:

  • 试试sudo kill -3 mysqld,然后重新开始试试看是否有效。
  • 不管我在下面的回答如何,您的stop 执行似乎不正确,应该是sudo service mysql stop。但是请查看恢复 root 密码的不同方法。

标签: mysql passwords digital-ocean


【解决方案1】:

改进您的研究:要重置根密码,我建议您不要使用--skip-grant-tables。这个建议很常见,但大多是毫无意义和危险的。它需要两次重新启动服务器。请看我的帖子Dangers of skip-grant-tables

更简单的解决方案是使用init-file 配置变量,并将其指向您SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456') 所在的文件,如上述帖子中所述。

还有更多的黑客可以让你在不停机的情况下更改密码,这些可以在 cmets 中找到这篇博文:Recovering a MySQL root password: the fourth solution

关于您无法启动 MySQL 的事实,如果前者不起作用,请遵循 @drew010 的 killall -TERM mysqldkillall -9 mysqld 的类似建议。您还可以查看错误日志(通常为 /var/log/mysqld.log,但在其他情况下按照您的 my.cnf 设置文件中的配置)。

【讨论】:

  • 所以尝试另一种方式,但仍然遇到问题。图片更新至上述帖子。
【解决方案2】:

使用以下命令。

sudo /etc/init.d/mysql stop

sudo service mysql stop

【讨论】:

    【解决方案3】:

    我对如何重置 mysql root 密码没有太多了解,但根据问题和错误A mysqld process already exists 这意味着其他实例或进程可能已经启动了停止的服务。

    根据Recover MySQL root password,用于停止My Sql服务的命令是

    /etc/init.d/mysql 停止

    所以尝试该命令,并尝试按照步骤操作,如果您再次遇到相同的错误,则在停止 My Sql 服务后,只需运行此命令即可查看哪个进程仍在运行
    ps -ef | grep 'mysql'
    输出看起来像

    mysql 2370 1 0 Dec04 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
    mysql 2504 2370 0 Dec04 ? 00:25:22 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/日志/mysqld.log --pid-file=/var/lib/mysql/mysqld.pid --socket=/var/lib/mysql
    /mysql.sock 根 38107 22476 0 08:54 pts/1 00:00:00 grep --color=auto mysql

    并尝试使用kill - 9 pid手动终止进程

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 2021-01-07
      • 2015-07-19
      • 2011-05-14
      • 1970-01-01
      • 2012-02-08
      • 2018-06-09
      相关资源
      最近更新 更多