mysql8.0以上版本修改密码问题记录

时间:2021-08-29 04:27:18

参考链接:

https://blog.csdn.net/qq_27820551/article/details/101488430

https://blog.csdn.net/mukouping82/article/details/81105831

1、以管理员身份运行cmd,进入到mysql安装的bin目录下

2、先关闭mysql服务 net stop mysql,紧接着执行 mysqld --console --skip-grant-tables --shared-memory (为了跳过登录进入mysql)

在这一步的时候我遇到的问题是执行完命令后打印以下内容

--10T20::.946001Z  [System] [MY-] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.) starting as process
--10T20::.983631Z [ERROR] [MY-] [Server] Failed to find valid data directory.
--10T20::.986677Z [ERROR] [MY-] [Server] Data Dictionary initialization failed.
--10T20::.988397Z [ERROR] [MY-] [Server] Aborting
--10T20::.990846Z [System] [MY-] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.) MySQL Community Server - GPL.

解决方案:

.删除自己手动创建的data文件夹;

.管理员权限cmd的bin目录下,移除已错误安装的mysqld服务;
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld -remove MySQL The service doesn't exist! 

.在cmd的bin目录下执行mysqld --initialize-insecure 会发现程序在mysql的根目录下自动创建了data文件夹以及相关的文件 

.bin目录下执行mysqld -install Service successfully installed.
5.bin目录下执行mysql服务启动net start mysql

循环第1,2步,正常输出

mysql8.0以上版本修改密码问题记录

3、以管理员身份新打开一个cmd,上面那个不要关闭。执行   mysql -uroot -p    就能免密进入

4、修改密码(这里需要注意mysql8.0以上版本修改密码方式与以前版本不同,密码格式要求至少包含了数字、字母及特殊字符三种

 使用以前的方式(update user set password=password('123456') where user='root')修改密码时会修改失败,会提示:Found invalid password for user: 'root@localhost'; Ignoring user

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

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

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

mysql8.0以上版本修改密码问题记录

6、重启mysql服务,密码重置成功。