我已经对如何重置mySQL root密码进行了一些研究,但是当我尝试运行此命令时:
sudo stop mysql
并输出:stop unknown instance
然后我尝试运行:
# mysqld_safe --skip-grant-tables &
我得到:A mysqld process already exists
更新
答案 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 mysqld
或killall -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