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

工具:centos7+mysql8.0
步骤;
1.修改MySQL的配置,方便无密码登录
命令:vi /etc/my.cnf 在文件中加入 skip-grant-tables;之后 重启MySQL服务systemctl start mysqld.service 就可以无密码登陆
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%';

在这里插入图片描述
可以看到当前密码长度为8;zhoulin1997 超长了

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

字段备注
validate_password.policyMEDIUM
validate_password.length8

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

set global validate_password.policy=0 ;

在这里插入图片描述
之后我们再次查看一下策略;明显变为了low
在这里插入图片描述
再次修改密码
执行命令: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下安装MySQL及重置mysql8.0密码
MySQL 8:密码策略设定

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
当在 MySQL 8.0 遇到 "Error 1366 (HY000): Incorrect string value" 错误时,这通常是由于插入或更新了包含无法正确映射到当前字符集的字符的数据所导致的。为了解决这个问题,可以尝试以下方法: 1. 修改字符集:将表的字符集修改为能够正确映射数据的字符集。例如,将表的字符集设置为 `utf8mb4`: ```sql ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 这将更改表的字符集,并确保能够正确存储数据。 2. 转码数据:对于包含无法正确映射的字符的数据,可以使用转码函数进行处理。例如,使用 `CONVERT` 函数将数据转换为正确的字符集: ```sql INSERT INTO your_table_name (column_name) VALUES (CONVERT('your_data' USING utf8mb4)); ``` 这将通过转码来插入数据,确保数据能够正确映射到字符集。 3. 修改连接字符集:在连接数据库之前,将连接的字符集设置为能够正确映射数据的字符集。例如,将连接字符集设置为 `utf8mb4`: ```sql SET NAMES 'utf8mb4'; ``` 这将确保后续的插入和查询操作都使用正确的字符集。 请注意,解决该错误可能涉及到多个方面的字符集设置,包括表的字符集、连接字符集等。确保所有涉及的字符集设置都正确,并且能够正确映射数据。另外,也要确保应用程序或客户端使用与数据库相同的字符集进行连接和操作,以避免出现不一致的字符集设置。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值