说明如何设置MySQL账户的密码,及账户过期。使用MySQL创建账户时,可以为账户直接创建密码。例如,
CREATE USER ... IDENTIFIED BY 'password'
对于一个已经存在的账户而言,可以通过执行“ALTER USER”语句或者“SET PASSWORD”语句对该账户设置密码。例如,
ALTER USER user1@localhost IDENTIFIED BY 'password';
SET PASSWORD FOR user1@localhost ='password';
或者使用mysqladmin客户端执行下列语句,前提是需要连接到mysql数据库
mysqladmin ... password 'newpassword'
MySQL从8.0.14版本之后支持使用双重密码,双重密码允许账户使用主要(primary)和次要(secondary)两个密码。其主要目的是在用户拥有大量的MySQL服务器、并且有多个应用程序连接到不同的MySQL,当对应用程序更新使用新的MySQL密码时,可以通过同时使用两个密码保证系统的正常运行。当全部的应用程序更新密码后,可以删除次要密码。
使用双重密码时,使用下列语句,
ALTER USER USER() IDENTIFIED BY 'newpassword' RETAIN CURRENT PASSWORD;
此时,新的密码将作为主要密码使用。
删除次要密码时,使用下列语句,
ALTER USER USER() DISCARD OLD PASSWORD;
当运维策略需要为数据库的新账户的密码设置使用期限时,可以使用“PASSWORD EXPIRE”关键字对账户进行设置。例如,
CREATE USER 'use'@'localhost' IDENTIFIED BY 'password1' PASSWORD EXPIRE;
此时,该用户登录MySQL服务器后,需要更改其密码才能够执行其他的语句。DBA通过配置“default_password_lifetime”全局变量,可以指定密码使用的期限(日),默认值为0,表示密码不会过期。也可以通过“PASSWORD EXPIRE”、“CREATE USER”或“ALTER USER”语句为每个账户指定期限。例如,
CREATE USER 'user4'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE INTERVAL 30 DAY;
为账户指定默认的密码期限。例如,
ALTER USER 'user5'@'localhost' PASSWORD EXPIRE DEFAULT;
禁用密码使用期限。例如,
ALTER USER 'user5'@'localhost' PASSWORD EXPIRE NEVER;
当账户密码过期时,用户必须更改其密码后,才能够执行其他语句。