linux中忘记MySQL8.0的密码;过程中遇到的错误(ERROR 1290 (HY000)错误)

工具:centos7+mysql8.0
步骤;
1.修改MySQL的配置,方便无密码登录
命令:vi /etc/my.cnf 在文件中加入 skip-grant-tables;之后 重启MySQL服务systemctl start mysqld.service 就可以无密码登陆linux中忘记MySQL8.0的密码;过程中遇到的错误(ERROR 1290 (HY000)错误)_第1张图片
2.无密码登陆MySQL
命令;mysql -u root不用输入密码 enter回车
命令:use mysql;
在这里插入图片描述

3.按照网络上正常流程来讲;接下来一般是“清空密码命令”
update user set authentication_string='' where user='root';
或者是“修改密码命令”
关注一下:在MySQL8.0版本中 以下 修改密码的命令已经不适用

update mysql.user set password='newpassword' where user='root';
update mysql.user set password=PASSWORD('newpassword') where User='root';

所以大家可以用alter user 'root'@'localhost' identified by 'zhoulin1997(你自己设置的密码)'

4.下面主菜来了;
大家可能会遇到我这样的情况;无论怎么执行SQL;都会报错

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement;

我有道翻译了一下“将用户’root’@‘localhost’更改为’zhoulin1997’;
错误1290 (HY000): MySQL服务器使用——skip-grant-tables选项运行,因此无法执行此语句”
在这里插入图片描述
我也想了很多方法
开始以为是格式问题;于是在my.cnf 文件中加入了格式语句;但是不顶用还是报错

[mysqld]
character_set_server = utf8
[mysql]
default-character-set = utf8

之后发现完全不是这样;
正常来讲;我们在修改语句后会刷新权限;flush privileges;
但是在之后我才知道;MySQL8.0中需要先刷新权限;再去修改密码
命令:

 flush privileges;
 alter user 'root'@'localhost' identified by 'zhoulin1997';

在这里插入图片描述
只后有了一个新的错误:

 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

错误1819 (HY000):您的密码不满足当前策略要求;

所以接下来是查看当前策略

SHOW VARIABLES LIKE 'validate_password%';

linux中忘记MySQL8.0的密码;过程中遇到的错误(ERROR 1290 (HY000)错误)_第2张图片
可以看到当前密码长度为8;zhoulin1997 超长了

于是重新修改alter user 'root'@'localhost' identified by 'zhou1997';
在这里插入图片描述
还是不行;我们详细观察了一下MySQL8.0的策略;这两个字段一个规定了策略等级;一个规定了密码长度

字段 备注
validate_password.policy MEDIUM
validate_password.length 8

所以 是zhou1997密码 的复杂度(即策略等级)达不到 medium(中等)这个等级;那就调低策略等级

set global validate_password.policy=0 ;

在这里插入图片描述
之后我们再次查看一下策略;明显变为了low
linux中忘记MySQL8.0的密码;过程中遇到的错误(ERROR 1290 (HY000)错误)_第3张图片
再次修改密码
执行命令:alter user 'root'@'localhost' identified by 'zhou1997';修改成功并退出!;
在这里插入图片描述
5.取消第一步中加入的“skip-grant-tables`”删掉保存退出

vim /etc/my.cnf
去除 skip-grant-tables; 、
命令行模式保存退出:wq!
重启MySQL服务  
```systemctl stop mysqld.service
   systemctl start mysqld.service
重新登录
   mysql -u -root -p
   输入密码 成功!

linux中忘记MySQL8.0的密码;过程中遇到的错误(ERROR 1290 (HY000)错误)_第4张图片
至此问题圆满解决

过程中引用的文章Linux下安装MySQL及重置mysql8.0密码
MySQL 8:密码策略设定

你可能感兴趣的:(mysql,centos,LuckyFrame,linux,内核,文件系统,网络)