在 mysql 8 中重置 root 管理员密码

在 mysql 8 中重置 root 管理员密码

我正在尝试弄清楚如何重置rootmySQL 用户密码。我发现:

https://www.tecmint.com/reset-root-password-in-mysql-8/

我尝试了第一个选项,一开始它似乎有效:

root@admin:~# cat /tmp/init-file.txt
ALTER USER 'root'@'localhost' IDENTIFIED BY 'testPASS';
root@admin:~#

然后我运行:

root@admin:~#  mysqld --user=mysql --init-file=/tmp/init-file.txt --console

root@admin:~#

然而,当我尝试使用新密码登录时,我得到:

root@admin:~# mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

我做错了什么?我以前从来没有重置过 root 密码,所以我不确定我是否遗漏了一些愚蠢的事情

更新:有趣的是,即使我正在执行“service mysql stop”,它似乎仍在运行:

root      4992  0.0  0.0  52700  3904 pts/0    S    15:33   0:00 sudo mysqld_safe --skip-grant-tables
root      4993  0.0  0.0   4504  1720 pts/0    S    15:33   0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables
mysql     5580  1.1 15.8 10668984 1291760 pts/0 Sl  15:33   0:10 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mysql/error.log --open-files-limit=2048 --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306

我该如何才能彻底杀死它?

更新2:

即使确保 mysql 已完全关闭,它似乎仍然不起作用:

root@admin:~# mysqld --user=mysql --init-file=/tmp/init-file.txt --console
root@admin:~# service mysql start
root@admin:~# mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

我甚至尝试在文件中使用“刷新”来重置密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxx';

flush privileges;

答案1

您可以尝试跳过完全加载授权表,而不是尝试重置 root 密码,这样 root 密码将为空白。

sudo mysqld stop
mysqld --skip-grant-tables --user=mysql &
mysql
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';
quit;
service mysql start

或者,如果你确实想使用脚本文件:

mysqld stop
mysqld --skip-grant-tables --user=mysql &
mysql < init_file.txt
mysqld stop
service mysql start

答案2

尝试这个:

grep 'A temporary password is generated' /var/log/mysqld.log | tail -1

然后运行以下命令在 MySQL 服务器上应用安全性。只需执行以下命令并按照安全向导的提示进行操作:

sudo mysql_secure_installation

按照屏幕上的说明进行操作。更改您的 root 帐户密码,然后按 Y 执行所有其他操作以应用改进的安全性。

更改 root 密码? – 按 y 并更改 root 密码
删除匿名用户?按 y 禁止 root 远程登录?按 y
删除测试数据库并访问它?(按 y 现在重新加载权限表?按 y

答案3

在尝试使用 启动 mysql 进程之前,您是否停止了该进程mysqld?可能是因为 mysql-daemon 已在运行,因此 init 文件从未执行。尝试关闭 mysqld,然后重复该过程。

相关内容