事件
近期,一直运作好好的mysql服务器突然远程连接上不上了,报错“ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.”,怀疑运维改了密码,登上远程服务器一顿操作,返现服务器本地访问mysql没有任何问题,遂查之,发现了问题所在
原因
从MySQL 5.7.4到5.7.10(为了鼓励更好的安全性请参阅MySQL:密码过期策略),默认default_password_lifetime变量值为360(1 year-ish)。对于这些版本,如果您不更改此变量(或个人用户帐户),所有密码将在360天后过期。
解决办法
针对单个用户设置不过期
ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;
针对所有用户
1、 SET GLOBAL default_password_lifetime = 0;
2、 修改my.cnf
[mysqld] default_password_lifetime = 0