Windows中MySQL 8.x版本忘记密码如何重设

Windows中MySQL 8.x版本忘记密码如何重置

文章目录

  • Windows中MySQL 8.x版本忘记密码如何重置
    • 一、前言
    • 二、重置密码操作
      • 1、停止MySQL服务
      • 2、以安全模式启动MySQL服务
      • 3、无密码登录mysql
      • 4、重置登录密码
      • 5、验证密码是否重置成功
    • 三、最后我想说

一、前言

好久之前在电脑下载的MySQL,最近准备使用MySQL的时候发现忘记密码了,试了很多次印象中的密码都无法登录,所以只好上网搜索一下在忘记密码的情况下如何重置密码,网上有很多中方法,但是我试过很多都无法解决,对于我而言,也就是说我使用其中一个人的方法无法解决,然后去使用另一个人的方法也无法解决,然后我综合了网上很多人的方法之后最后成功了,所以在这里我将我总结的方法写出来,详细一点,供大家参考。

二、重置密码操作

1、停止MySQL服务

我们首先打开cmd终端,执行如下命令:

net stop mysql

在这里我们可能会出现第一个问题,那就是显示服务名无效。出现这个错误的原因是系统中并没有注册mysql到服务中,即当前路径下没有mysql服务。如果出现这个错误,我们就需要进入MySQL安装目录下的bin目录中继续执行如下命令:

mysqld --install

执行上述命令之后如果出现Service successfully install代表你已经安装成功。

如果执行上述命令之后出现Install/Remove of the Service Denied则需要使用管理员的身份运行。

然后再执行上面的停止命令,出现如下图即停止成功:

在这里插入图片描述

这里还会出现一个问题那就是:

在这里插入图片描述

如果出现入上图所示问题,我们需要先启动mysql服务。

我们继续使用管理员的权限在bin目录下执行如下启动命令:

net start mysql

运行这个命令也会出现新的问题:

Windows中MySQL 8.x版本忘记密码如何重设_第1张图片

这个时候我们需要删除mysql下的data文件,重新执行mysqld --initialize 命令就可以在当前路径下生成data文件夹,再执行net start mysql 就可以启动mysql。

如果还是无法启动的话,我们再次输入如下命令:

mysqld --console

如果出现以下显示端口被占用问题:

在这里插入图片描述

我们再执行如下命令查看3306端口进程ID:

netstat -aon|findstr "3306"

在这里插入图片描述

从这张图我们可以看见3306端口被占用,进程ID 是6884,这个时候我们需要执行如下命令结束当前进程:

taskkill /f /pid 6884

在这里插入图片描述

然后再执行启动服务就可以成功启动了。

在这里插入图片描述

启动完之后我们再执行停止命令即可。

2、以安全模式启动MySQL服务

紧接着我们使用管理员的身份登录终端,然后进入MySQL安装目录下的bin目录中执行如下命令:

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

如果输入执行之后没有返回的话我们就再开一个cmd重新使用管理员身份登录终端,然后进入MySQL安装目录下的bin目录中执行以下命令:

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

Windows中MySQL 8.x版本忘记密码如何重设_第2张图片

出现如上信息就说明我们已经成功跳过mysql的密码登录了。

3、无密码登录mysql

执行完以上操作之后,我们再重新开一个cmd,还是使用管理员身份登录终端,然后进入MySQL安装目录下的bin目录中执行以下命令:

mysql -u root -p

此时会显示让你输入密码,直接回车就可以成功连接mysql。

Windows中MySQL 8.x版本忘记密码如何重设_第3张图片

4、重置登录密码

我们依次执行如下命令:

UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

Windows中MySQL 8.x版本忘记密码如何重设_第4张图片

执行完之后我们再登录一遍mysql,再次在mysql中执行如下语句重置密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

Windows中MySQL 8.x版本忘记密码如何重设_第5张图片

到这里我们的密码重置就成功了,但是这个有个问题那就是网上有很多重置密码的语句是执行不了的,例如:

use mysql;
UPDATE user SET authentication_string = password ('[$Password]') WHERE User = 'root';

我们执行这个命令会报错:

在这里插入图片描述

出现这个报错是因为MySQL 8.0.15(也可能早于此)上,这个PASSWORD()功能没有作用了,应该是被废除了。我们需要执行我上面说的新的指令才能执行成功。

5、验证密码是否重置成功

我们首先关闭所有的终端,然后在新建终端输入启动mysql服务指令:

net start mysql

现在服务启动成功之后,我们再次执行登录指令:

mysql -u root -p

然后输入我们重置后的密码进行登录。

Windows中MySQL 8.x版本忘记密码如何重设_第6张图片

可以看见我们可以成功登录了,证明重置成功了。

如果登录mysql的时候报错[ERROR 1130 (HY000): Host '' is not allowed to connect to this MySQL server [duplicate\]](https://stackoverflow.com/questions/19101243/error-1130-hy000-host-is-not-allowed-to-connect-to-this-mysql-server)那么证明你还没有重置成功可以从第一步重新再试一遍。

三、最后我想说

本期博客针对的是Windows中MySQL 8.x版本的重置密码操作,如果你是其他操作系统或者其他MySQL版本可能无法成功重置,需要去网上看看其他版本的操作方法,最后希望本次博客能够帮助你们成功重置密码,我也是研究了好一会才解决的,比较麻烦,整理总结不易,期待得到你们的支持,谢谢!

你可能感兴趣的:(MySQL学习,学习中遇见的问题,mysql,windows,数据库)