使用–skiptables重置MySQL8 root用户的密码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用–skiptables重置MySQL8 root用户的密码相关的知识,希望对你有一定的参考价值。

参考技术A 如果不幸忘记或丢失了 mysql root用户的密码,需要一种方法来以某种方式恢复它。 我们需要知道的是密码存储在用户表中。 这意味着我们需要想办法绕过 MySQL 认证,这样我们才能更新密码记录。

幸运的是,有一个简单的实现,本教程将指导您完成在 MySQL 8.0 版本中恢复或重置 root 用户密码的过程。

根据 MySQL 文档,有两种方法可以重置root用户的密码。其中一种方法是使用 --skip-grant-tables 选项启动 MySQL 服务。 这不太安全,因为当服务以这种方式启动时,所有用户都可以在没有密码的情况下进行连接,不过这种方法比较简单,我们首先来看看这种方法。

如果服务器启动--skip-grant-tables,--skip-networking 选项会自动激活,因此远程连接将不可用。

首先停止MySQL服务

使用 选项 --skip-grant-tables 启动MySQL服务

然后,您只需运行mysq即可连接到mysql服务器。

由于使用 --skip-grant-tables 选项启动服务时禁用了帐户管理,因此我们将不得不重新加载授权。 这样我们以后就可以更改密码:

现在可以运行以下查询来更新密码。 确保将“new_password”更改为您希望使用的实际密码。

现在停止 MySQL 服务器,然后正常启动它。

现在使用新密码再次连接MySQL

启动mysqld时,如果遇到下面的错误

搜索一番,参考文章2和3给出了各种可能性,通过查询可以看出确实有个mysqld服务未关闭,可是之前我确实关闭了mysql,不知道怎么回事。

只能通过kill命令杀死mysql

mysql8.0版本忘记root密码

1、先关掉系统服务

net stop mysql

2、进入mysql安装目录的bin文件中,以管理员的方式运行cmd,然后输入如下命令,实现无密码登陆

mysqld --console --skip-grant-tables --shared-memory

3、以空密码登入系统

mysql.exe -u root

4、重置密码

UPDATE mysql.user SET authentication_string='root' WHERE user='root' and host='localhost';

5、ok

以上是关于使用–skiptables重置MySQL8 root用户的密码的主要内容,如果未能解决你的问题,请参考以下文章

MySQL8 重置密码

MySql8.0主从复制的重置核心步骤

java.sql.SQLException: Access denied for user 'roo'@'localhost' (using password: YES

mysql8.0.x跳过权限效验,重置root密码

Mac brew安装MySQL8.0.18后忘记密码(重置密码篇)

MySQL8版本密码重置(老版本skip-grant-tables不起作用,MySQL服务开启之后立马关闭)