mysql(1862)密码过期详细解决办法

时间:2024-02-22 21:13:45
今天同学使用mysql时,遇到一个关于mysql密码过期的问题,报错如下

1862:Your password has expired.To log in you must change it using a
client that suports expired passwords.

现已解决,特在次记录下来,供以后自己查看使用,本次测试使用的是mysql5.7,以下的版本目前并没有遇到过密码过期的问题。

一、报错分析

在这里插入图片描述
就是字面意思,密码过期了
有兴趣了解mysql密码为什么设置使用期限的同学可以去读读这篇博文
MySQL的用户密码过期功能详解
知道原因了,那么我们要做的就简单了,重新更新一下密码即可!

当然如果要设置密码永不过期的全局策略,可以这样:(注意这是默认值,配置文件中可以不声明)

[mysqld]
default_password_lifetime=0

二、解决办法

①首先我们需要找到my.ini

(这个一个Mysql的配置文件)
这个文件所在的目录

在这里插入图片描述
默认情况下,ProgramData是隐藏的,window10系统,找到上方的查看>>勾选隐藏的项目 这个复选框,即可在C跟目录下找到此文件夹。

②在找到的my.ini文件中,这个位置加上这样一条代码

skip-grant-tables

在这里插入图片描述

③在控制器(cmd)进入mysql5.7下的bin文件夹

主要找的是mesql.exe这个文件的存在的目录
cd C:\Program Files\MySQL\MySQL Server 5.7\bin
在这里插入图片描述

接下来是详细步骤:

1.执行命令 mysqld --skip-grant-tables这个命令的意思是在数据库启动的时候 跳跃权限表的限制,不验证密码,直接登录。

(执行这一步无效的同学,可以试试,把sql服务先关闭一下试试,在任务管理器的服务中进行即可)
在这里插入图片描述

2.无密码登入 mysql -u root -p 回车确定。然后不用输入密码,再次回车确定。就登陆了系统。
(做到这一步的时候,你可能会遇到这个问题,如果出现这个问题,如果前面的确定没问题,你可以试试把mysql服务打开,然后在关闭试试)
在这里插入图片描述
成功进入之后是这样的
在这里插入图片描述

3.刷新密码 在控制台输入:

update mysql.user set
authentication_string=password(‘root’),password_last_changed = NOW()
where user=‘root’ ;

即,修改密码(authentication_string)和时间(password_last_changed)
只修改密码是不行的,必须和时间一起修改,只修改密码的话可能会没有效果


4.查看结果

select host,user,authentication_string,password_last_changed from
mysql.user;

如果后面的时间显示为当然系统时间,证明更新成功!


5.刷新权限,执行 flush privileges;


6.退出,重新启动mysql数据库,报错便不见了
quit


最后把之前 my.ini 里的skip-grant-tables这句话去掉

重启mysql就可以了


另外提一句,如果再操作过程中遇到了这种情况,可以参考一下这位大哥的博文

在这里插入图片描述
在CMD中输入了错误的SQL语句无法退出SQL编辑模式,该怎么解决

这个时候就要先在> 后面输入你输入错误的符号,让他们完整的结束,然后下一行就会出现 ->

此时输入\c就能退出让人抓狂的循环,变成mysql> ,这个时候你再quit就能退出编辑模式了

注:本文参考了这俩位大佬的博文,若有错误欢迎评论指出(_)
关于Mysql的安装遇到的问题,找不到my.ini , 以及修改Mysql密码

window mysql5.7 密码过期问题解决