MySQL8 忘记root密码 重置root密码
叙:好久不用本地的MySQL库了,今天自己学点东西,结果发现密码忘了,自己安装的是MySQL8的数据库,在重置root密码时发现MySQL8的数据库重置密码的操作和之前的版本并不相同,特此记录一下!
MySQL8 忘记root密码 重置root密码
1、第一步:置空root原密码
1.1、“越狱”跳过root密码进行登录
-
思路: 使用管理员权限模式打开CMD面板,输入:
mysqld --console --skip-grant-tables --shared-memory
(在此之前确定MySQL的所有服务都是关闭的,可以先使用net stop mysql80
来进行关闭MySQL的服务,“MySQL80”是指自己电脑上MySQL的服务名,不要写错了,我的是MySQL80,各位童鞋请根据自己的进行改变)。 -
命令:
mysqld --console --skip-grant-tables --shared-memory
- 操作样式如下所示:
1.2、置空root密码操作
1.2.1、进入MySQL操作空间
-
思路: 再次以管理员身份打开一个CMD面板,上一个面板不要关闭也不要进行任何操作,在新打开的CMD面板中输入:
mysql -uroot -p
回车,提示让你输入密码,之前的步骤已经帮我们越过了密码校验功能,我们不用输入任何东西,直接再次回车,即可进入MySQL中,如下图: -
命令:
mysql -uroot -p
- 操作样式如下图所示:
进入MySQL命令操作模式;
1.2.2、去除root用户的密码
-
思路: 输入三条命令来去除root用户的密码;
-
命令:
-
use mysql;
// 进入操作MySQL数据库的模式; -
update user set authentication_string=’’ where user=’root’;
// 更新置空root用户的校验字符串(可以理解为就是登陆密码) -
select user, authentication_string from mysql.user;
// 查看root用户的校验字符串是否被置空;
-
-
操作样式如下所示:
可以清晰地看到root用户的authentication_string
字段被置空成功了;
1.2.3、将之前的操作刷新保存
-
命令:
flush privileges
2、第二步:配置root用户密码并测试
2.1、配置root用户密码
- 思路: 关闭之前的两个CMD命令行面板,然后重新在启动一个以管理员身份运行的CMD命令行面板,然后开始给root设置密码(其实现在的root用户的密码已经被清空,如果对于root密码不在意的即使不设置亦可以;),在CMD中输入以下
-
命令:
-
net start MySQL80
//启动mysql -
msyql -uroot -p
// 使用root用户进行登陆MySQL,出现的密码输入提示不用管,直接回车即可 -
use mysql;
// -
alter user 'root'@'localhost' identified by '你的新密码';
// 给root用户的密码插入值 -
select user, authentication_string from mysql.user;
// 查看root用户的校验字符串插入是否操作成功 -
flush privileges;
// 刷新之前的操作 -
exit
// 退出MySQL操作空间 -
net stop mysql80
//关闭MySQL服务
-
- 操作如下图所示(上边的命令也许并未在图中完全显示,按照命令走就OK了):
2.2、更改结果测试
-
思路: 关闭已有的CMD命令行面板,重新开启一个管理员身份操作的CMD命令行面板,然后开始登陆,代码如下:
-
命令:
-
net start mysql80
// 打开MySQL服务 -
mysql -uroot -p
// 登陆MySQL,然后输入之前设定的root用户的密码,回车即可;
-
-
操作样式如下:
登陆成功~ -
Navicat连接数据库测试,如下图:
测试成功~
pass1:本来想在置空了root用户密码后直接再给root用户进行设置密码的,但是发现因为“越狱”的跳过密码的命令导致无法立即赋值,因此才需要关闭了操作之后再进行设定root密码~
pass2:在mysql8.0以及以上版本中update mysql.user set password='newpassword' where user='root';
和update mysql.user set password=PASSWORD('newpassword') where User='root';
等一些命令已经不允许被使用了;