Mysql8.0 Windows下忘记密码的处理办法

本文介绍了在MySQL 8.0版本中如何解决忘记密码的问题,包括停止服务、无密码登录、更新密码、修改加密规则以及重启服务的详细步骤。同时,也提供了远程Navicat连接MySQL遇到的问题及解决方法,包括修改用户加密规则以适应新版本的兼容性需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件名称

版本

安装路径

下载地址

mysql

8.0

C:\Program Files\MySQL\MySQL Server 8.0\

官网社区版

前情摘要:有时经常会因为多项目开发或者是修改密码后忘记密码,mysql8.0版本与5.0+版本忘记密码的修改方法稍有不同。之前的博客中已经提供mysql5.0+版本的密码修改方法,此处不在赘述。

操作步骤如下:

1. 停止mysql80(名称应与安装mysql时的一致)服务

net stop mysql80

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

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

3. 以空密码登入系统

mysql -u root

4. 重置密码

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

此处authentication_string为密码字段,未加密文本,请注意。

5. 数据库密码加密方修改

# 数据库密码加密规则还原成mysql_native_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
# 刷新权限
FLUSH PRIVILEGES;
# 再查询用户及加密方式已修改
select host, user, plugin from user;

6. 重启mysql80服务。

到此结束。

附加内容:

远程navicat mysql登陆

FAQ:

1. 安装mysql或者是执行第二步骤出现以下问题的解决

解决方法:

在mysql的安装目录bin下使用管理员权限执行:

mysqld --initialize-insecure

执行成功后的结果:会自动在安装目录下生成一个与bin同级的目录data,标识已经成功创建。

2. 修改密码后出现无效密码问题

使用 

mysql -u root -p

无法登陆

解决方法:

use mysql;
update user set authentication_string='' where user='root';// 如果这个字段有值,先置为空,之前的版本密码字段是password
flush privileges;                                          // 刷新权限表
执行select user,host from user;                            // 查看用户及host,方便后续修改
ALTER user 'root'@'localhost' IDENTIFIED BY '你的密码';    // 修改root 密码
exit;                                                     //退出mysql

3. navicat mysql 远程连接错误

说明密码正确,但是无法远程登录。

原因:
由于mysql8之前的版本中加密规则是 mysql_native_password,而在 mysql8 之后,加密规则是caching_sha2_password。

解决方法:
1.升级 navicat 驱动;
2.把 mysql 用户登录密码加密规则还原成 mysql_native_password。如果用的是破解版的 navicat,则只能用这种办法解决。

步骤如下:
#### 1) 首先以管理员身份运行 cmd,然后使用命令进入 mysql

`mysql -u root -p`

输入密码登录至mysql控制台。

出现环境变量设置问题请自行解决,此处暂不提供方法。

#### 2) 更改加密方式
`ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;`
  
#### 3) 更改密码——由于加密规则更改,所以需要重置密码
`ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';`

#### 4) 刷新数据库
`FLUSH PRIVILEGES;`

### 如何在 Windows 上重置 MySQL 8.0 的 Root 密码 #### 停止 MySQL 服务 为了安全地更改 `root` 用户的密码,需要先停止正在运行的 MySQL 服务。可以通过命令提示符来完成此操作: ```cmd net stop mysql80 ``` 这会停止名为 `mysql80` 的 MySQL 服务[^1]。 #### 启动 MySQL 跳过权限表 启动 MySQL 数据库时跳过权限表验证可以绕过现有的访问控制设置,从而允许无密码登录并修改账户信息。为此,在命令行输入如下指令: ```cmd mysqld --console ``` 这条命令会在不加载授权表的情况下启动服务器实例,并将日志打印到终端以便监控[^2]。 #### 登录 MySQL 并更新密码 打开一个新的命令窗口(保持之前的 mysqld 进程继续执行),通过以下方式连接至数据库: ```cmd mysql -u root ``` 成功进入 MySQL shell 后,使用 SQL 查询语句改变 `root` 用户的认证字符串: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES; ``` 上述代码中的 `'新密码'` 应替换为你想要设定的新密码[^3]。 #### 关闭 MySQL 实例并重启正常模式的服务 完成以上步骤之后,关闭当前异常状态下的 MySQL 实例,再重新按照常规流程开启它: ```cmd exit; /*退出MySQL Shell*/ taskkill /F /IM mysqld.exe /*终止所有mysqld进程*/ net start mysql80 /*以标准配置再次激活服务*/ ``` 此时应该能够利用刚刚设置好的新凭证去管理数据库了[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值