暂无图片
MySQL在不知道明文密码的情况下重置密码
我来答
分享
豆宇斯
2022-06-06
MySQL在不知道明文密码的情况下重置密码

MySQL版本5.7.20,因为等保要求需要将default_password_lifetime从默认的0改成180,测试环境测试的时候发现在修改参数后password_last_changed在180天前的账号会马上过期,有什么办法能在不知道明文密码的情况下重置密码么,尝试像Oracle用密文刷新会报错

alter USER 'douyusi'@'%' IDENTIFIED BY PASSWORD '*XXX';

手动update password_last_changed字段也不行

update mysql.user set password_last_changed=DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s') where user='douyusi';

不过在测试的时候发现如果账号没采用default_password_lifetime,使用的是password_lifetime,直接update password_last_changed是可以的

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
dbtiger

您好,编辑一下my.cnf文件,步骤如下:

1.查找my.cnf文件所在路径

whereis my.cnf

2.添加如下属性

[mysqld]
skip-grant-tables

3.重启服务

/etc/init.d/mysqld restart

4.无密码进入然后修改密码

mysql > use mysql;
mysql > update user set password=password(‘YOUR_NEW_PASSWORD’) where user=‘root’;
mysql > flush privileges;

祝您成功!

暂无图片 评论
暂无图片 有用 1
豆宇斯
题主
2022-06-06
有root的密码,但是没有业务账号对应的密码,root账号可以正常登录数据库
大大刺猬

不建议直接更新表,  建议使用alter语句来管理, 如下是官方给的例子:

ALTER USER 'jeffrey'@'localhost'
IDENTIFIED WITH sha256_password BY 'new_password'
PASSWORD EXPIRE INTERVAL 180 DAY;

暂无图片 评论
暂无图片 有用 0
Jones

可以直接更新user表把密码字段authentication_string更新成当前值。update mysql.user set authentication_string="*58319282EAB9E38D49CA25844B73DA62C80C2ABC" where user="test";

暂无图片 评论
暂无图片 有用 0
豆宇斯
题主
2022-06-28
更新user表后过期时间好像还是没刷新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏