MySQL Error number: MY-010928; Symbol: ER_MUST_CHANGE_EXPIRED_PASSWORD; SQLSTATE: HY000

文档解释

Error number: MY-010928; Symbol: ER_MUST_CHANGE_EXPIRED_PASSWORD; SQLSTATE: HY000

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

MySQL错误代码MY-010928,即ER_MUST_CHANGE_EXPIRED_PASSWORD,其SQLSTATE是HY000,仅在MySQL 5.7.7及更高版本中才存在,是一个可检测的错误。

错误提示:The password for user ‘%s’ has expired and must be changed

错误说明:此错误是MySQL5.7.7版本引入的,它标识MySQL服务器在尝试使用特定的用户名和密码登录时发现密码已过期。该错误与mysql.user表中的password_life_time变量有关,该变量有一个特定的值,指定了密码在多久之后过期,从而必须进行更新。

常见案例或情况:密码到期是一种良好的数据库安全最佳实践,一般来说,通过安装SQL_MODIFY_PASSWORD插件,我们可以立即生效。这一限制可以防止已知密码的攻击,从而被恶意利用,因此,在每隔一定时间都需要更改,以及增加新的密码安全措施。

解决方法:此错误的解决方案非常简单,只需要更新密码即可。我们可以使用update会话重置密码:

UPDATE mysql.user SET PASSWORD = PASSWORD(‘NEW_PASSWORD’) WHERE USER = ‘username’

运行此语句后,服务器上的新密码就已经生效了。此外,如果想要防止以后的密码过期,我们还可以设置mysql.user表中的 password_expired字段,以确保用户永不过期:

UPDATE mysql.user SET password_expired = ‘N’ WHERE USER = ‘username’

最后,在更改密码后,我们也可以对根密码进行设置,以防止恶意使用:

SET GLOBAL validate_password_policy = 0;

SET GLOBAL validate_password_length = 4;

你可能感兴趣的