如何重置丢失的mysql root密码

时间:2015-12-07 08:36:31

标签: mysql passwords digital-ocean

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

sudo stop mysql

并输出:stop unknown instance

然后我尝试运行:

# mysqld_safe --skip-grant-tables &

我得到:A mysqld process already exists

更新

尝试了建议的另一种方式并遇到了这个错误: enter image description here

3 个答案:

答案 0 :(得分:1)

使用以下命令。

sudo /etc/init.d/mysql stop

sudo service mysql stop

答案 1 :(得分:1)

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

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

还有一些黑客实际上允许您在没有停机的情况下更改密码,这些可以在此博客文章的评论中找到:Recovering a MySQL root password: the fourth solution

关于你无法启动MySQL的事实,如果前者没有做到这一点,请遵循killall -TERM mysqldkillall -9 mysqld的@ drew010评论的类似建议。您还可以查看错误日志(通常为/var/log/mysqld.log,但在my.cnf设置文件中配置)。

答案 2 :(得分:0)

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

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

  

/etc/init.d/mysql stop

所以尝试该命令,并尝试按照步骤操作,如果再次遇到相同的错误,则在停止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 / log / mysqld.log --pid-file = / var / lib / mysql / mysqld.pid --socket = / var / lib / mysql
/mysql.sock   root 38107 22476 0 08:54 pts / 1 00:00:00 grep --color = auto mysql

尝试使用kill - 9 pid

手动终止该过程