一、问题背景
MySQL是目前应用最广泛的关系型数据库之一,但在使用的过程中,可能不可避免的会出现忘记MySQL账号密码的情况。这时候怎么办呢?本篇文章将从多方面为大家介绍MySQL8.0忘记密码的解决方案。
二、方案1:更新root密码
如果您忘记了root密码,可以通过以下方法来更新root密码:
1. 停止MySQL服务,使用管理员权限打开cmd,输入如下命令:
net stop mysql80
2. 修改MySQL配置文件my.ini,在[mysqld]下加入skip-grant-tables,表示跳过权限验证:
[mysqld]
……
skip-grant-tables
3. 重启MySQL服务,打开cmd,输入如下命令:
net start mysql80
4. 使用root账号登录MySQL,无需密码:
mysql -uroot
5. 更新root密码:
mysql> UPDATE user SET authentication_string=password('新密码') WHERE user='root';
mysql> FLUSH PRIVILEGES;
6. 删除my.ini中的skip-grant-tables,重启MySQL服务,再次登录root用户,使用新密码即可:
mysqladmin -uroot -p shutdown
net start mysql80
mysql -uroot -p
三、方案2:使用mysqladmin命令重置密码
MySQL自带了mysqladmin命令,我们可以借助该命令来重置MySQL账户密码:
1. 停止MySQL服务,使用管理员权限打开cmd,输入如下命令:
net stop mysql80
2. 修改MySQL配置文件my.ini,在[mysqld]下加入skip-grant-tables,表示跳过权限验证:
[mysqld]
……
skip-grant-tables
3. 重启MySQL服务,打开cmd,输入如下命令:
net start mysql80
4. 使用mysqladmin命令来重置MySQL账户root的密码:
mysqladmin -u root password 新密码
5. 删除my.ini中的skip-grant-tables,重启MySQL服务,使用新密码即可:
mysqladmin -uroot -p shutdown
net start mysql80
mysql -uroot -p
四、方案3:修改MySQL数据表中密码
如果您不知道root账户密码,也可以直接修改MySQL数据表中的密码,来达到重置密码的目的:
1. 停止MySQL服务,使用管理员权限打开cmd,输入如下命令:
net stop mysql80
2. 修改MySQL配置文件my.ini,在[mysqld]下加入skip-grant-tables,表示跳过权限验证:
[mysqld]
……
skip-grant-tables
3. 重启MySQL服务,打开cmd,输入如下命令:
net start mysql80
4. 登录MySQL,不需要密码了:
mysql -uroot
5. 修改root账户的密码,例如修改为“123456”:
mysql> use mysql;
mysql> update user set authentication_string=password('123456') where user='root';
6. 刷新权限:
mysql> flush privileges;
7. 删除my.ini中的skip-grant-tables,重启MySQL服务,使用新密码即可:
mysqladmin -uroot -p shutdown
net start mysql80
mysql -uroot -p
五、方案4:通过重置system表空间密码进行重置
如果您不是系统管理员,也可以使用以下手段来重置密码:
1. 使用管理员权限登录MySQL,执行以下SQL语句:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
2. 刷新权限:
FLUSH PRIVILEGES;
3. 重置system表空间密码:
SET PASSWORD FOR 'root'@'localhost' = '123456';
4. 退出MySQL,使用新密码登录即可:
exit
mysql -uroot -p
六、小结
本篇文章总结了多种方案用于解决MySQL8.0忘记密码的问题。根据个人情况选择相应的方案即可。如果以上方案都无法解决问题,建议您搜索相关技术社区解决方案,或者咨询专业人士。