记MySQL忘记root密码和新建用户
`
例如:第一章 MySQL 忘记密码
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
好久不用MySQL, 忘记root的登录密码了,虽然navicat可以保存密码, 但是不是明文密码,于是我就想重置一下root密码。
重置完密码,紧接着添加用户并授权。
提示:以下是本篇文章正文内容,下面案例可供参考
一、重置密码
1.关闭mysql服务器
我的MySQL服务名是mysql8, 故使用如下command
2.跳过密码验证启动mysql
8.0版本以前可以用
mysqld --skip-grant-tables
8.0版本用以下命令, 我的是8.0, 故用下面的命令
mysqld --console --skip-grant-tables --shared-memory
3.直接以无密码的方式连接
再重新以管理员身份打开cmd, 可以到mysql 安装路径下的bin 目录,也可以在任意路径执行下面的命令。
mysql -uroot -p 直接回车就可以登录了
4.修改当前用户的密码
真正存储用户表的密码字段存储的肯定是密文,只有用户自己知道明文是什么,其他人都不知道,这样更加安全,密码对比也只能密文对比
方法1(如不行请使用方法2)
update mysql.user.set password=password(123) where user=“root” and host=“localhost”;
方法2
update user set authentication_string=‘’ where user=‘root’; # 将密码重置为空, 也可以设置成其他密码, 如‘123456’
下面是我修改密码遇到的问题,最终使用的方法2,成功改密码,刚开始我改成了空,后来我用同样的方法改成了123456.
二、重置密码后遇到的问题
1.重置密码后,mysql8 启动后,打开navicat, 用root 账号和密码登录报错
![在这里插入图片描述](https://img-blog.csdnimg.cn/facec1de13b647e1a114998f3850fbbc.png
用户名和密码没有问题,就是一直报错。我通过命令行登录,也是同样的问题
https://blog.csdn.net/m0_48958478/article/details/121704034 参阅这个文章:
原因:
因为MySQL8的特性,关闭了root用户的登陆,官网新版本里有介绍
2.解决方案
2.1每次登录前,先以管理员身份执行下面的命令(默认mysql服务器开机自启动,所以需要先stop)
net stop mysql8
mysqld --console --skip-grant-tables --shared-memory
然后在navicat上用root 账号登录,或者再以管理员身份打开一个cmd通过命令行用root账号登录,可以登录成功.
2.2新建普通用户,并授权所有的权限给普通用户
因为它是关闭了root 用户权限,所以我就想通过新建用户并授权的方式试一下,看能不能解决这个问题。
我通过方法1,用root 用户登录进去,然后执行如下语句
创建用户并授权:
在创建用户的时候遇到了一个报错:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement,执行 flush privileges;
然后再执行创建语句,创建成功。授权之后,我关闭所有cmd, 然后手动启动mysql8服务器,
然后用用户test1登录,登录成功!
总结
每一次遇到问题都是一个学习积累的过程,加油!!!