首页 > 技术文章 > MySQL8 忘记root密码 重置root密码

90s-ITBoy 2020-04-26 11:24 原文

 

叙:好久不用本地的MySQL库了,今天自己学点东西,结果发现密码忘了,自己安装的是MySQL8的数据库,在重置root密码时发现MySQL8的数据库重置密码的操作和之前的版本并不相同,特此记录一下!


 

 


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用户的密码;

  • 命令:

    1. use mysql; // 进入操作MySQL数据库的模式;
    2. update user set authentication_string=’’ where user=’root’; // 更新置空root用户的校验字符串(可以理解为就是登陆密码)
    3. 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中输入以下
  • 命令:
    1. net start MySQL80 //启动mysql
    2. mysql -uroot -p // 使用root用户进行登陆MySQL,出现的密码输入提示不用管,直接回车即可
    3. use mysql; //
    4. alter user 'root'@'localhost' identified by '你的新密码';// 给root用户的密码插入值
    5. select user, authentication_string from mysql.user; // 查看root用户的校验字符串插入是否操作成功
    6. flush privileges; // 刷新之前的操作
    7. exit // 退出MySQL操作空间
    8. net stop mysql80 //关闭MySQL服务
  • 操作如下图所示(上边的命令也许并未在图中完全显示,按照命令走就OK了):


2.2、更改结果测试

  • 思路: 关闭已有的CMD命令行面板,重新开启一个管理员身份操作的CMD命令行面板,然后开始登陆,代码如下:

  • 命令:

    1. net start mysql80 // 打开MySQL服务
    2. 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'; 等一些命令已经不允许被使用了;


《END》

 

推荐阅读