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 密码过期问题解决