mysql8.0以上版本修改密码问题记录
参考链接:
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)
在这一步的时候我遇到的问题是执行完命令后打印以下内容
2020-02-10T20:21:30.946001Z 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.19) starting as process 11760 2020-02-10T20:21:30.983631Z 1 [ERROR] [MY-011011] [Server] Failed to find valid data directory. 2020-02-10T20:21:30.986677Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. 2020-02-10T20:21:30.988397Z 0 [ERROR] [MY-010119] [Server] Aborting 2020-02-10T20:21:30.990846Z 0 [System] [MY-010910] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.19) MySQL Community Server - GPL.
解决方案:
1.删除自己手动创建的data文件夹; 2.管理员权限cmd的bin目录下,移除已错误安装的mysqld服务;
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld -remove MySQL The service doesn't exist!
3.在cmd的bin目录下执行mysqld --initialize-insecure 会发现程序在mysql的根目录下自动创建了data文件夹以及相关的文件
4.bin目录下执行mysqld -install Service successfully installed.
5.bin目录下执行mysql服务启动net start mysql
循环第1,2步,正常输出
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
1) use mysql; 2) update user set authentication_string='' where user='root';// 如果这个字段有值,先置为空,之前的版本密码字段是password 3) flush privileges;// 刷新权限表 4) 执行select user,host from user;// 查看用户及host,方便后续修改 5) 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;
6、重启mysql服务,密码重置成功。
xsshu