Срок действия пароля пользователя
Срок действия пароля пользователя был введён в MariaDB 10.4.3.
Срок действия пароля позволяет администраторам устанавливать срок действия паролей пользователей, как вручную, так и автоматически.
Системные переменные
Существуют две системные переменные, влияющие на срок действия пароля: default_password_lifetime, которая определяет интервал времени, по истечении которого пользователю необходимо сменить пароль. 0, по умолчанию, означает, что автоматическое истечение срока действия пароля не активно.
Вторая переменная, disconnect_on_expired_password, определяет, разрешено ли клиенту подключиться, если срок действия его пароля истек, или разрешено ли ему подключиться в режиме песочницы, имея возможность выполнить ограниченный подмножество запросов, связанных с сбросом пароля, в частности SET PASSWORD и SET.
Установка ограничения срока действия пароля для пользователя
Помимо автоматического истечения срока действия пароля, как определено параметром default_password_lifetime, сроки действия паролей могут быть установлены индивидуально для каждого пользователя, переопределяя глобальные значения с помощью команд CREATE USER или ALTER USER, например:
CREATE USER 'monty'@'localhost' PASSWORD EXPIRE INTERVAL 120 DAY;
ALTER USER 'monty'@'localhost' PASSWORD EXPIRE INTERVAL 120 DAY;
Ограничения можно отключить, используя ключевое слово NEVER, например:
CREATE USER 'monty'@'localhost' PASSWORD EXPIRE NEVER;
ALTER USER 'monty'@'localhost' PASSWORD EXPIRE NEVER;
Вручную установленное ограничение может быть восстановлено до значения по умолчанию с помощью DEFAULT, например:
CREATE USER 'monty'@'localhost' PASSWORD EXPIRE DEFAULT;
ALTER USER 'monty'@'localhost' PASSWORD EXPIRE DEFAULT;
SHOW CREATE USER
Команда SHOW CREATE USER отобразит информацию о статусе истечения срока действия пароля пользователя. В отличие от MySQL, она не будет отображать информацию о разблокированном пользователе или о том, установлен ли срок действия пароля по умолчанию.
CREATE USER 'monty'@'localhost' PASSWORD EXPIRE INTERVAL 120 DAY; CREATE USER 'konstantin'@'localhost' PASSWORD EXPIRE NEVER; CREATE USER 'amse'@'localhost' PASSWORD EXPIRE DEFAULT; SHOW CREATE USER 'monty'@'localhost'; +------------------------------------------------------------------+ | CREATE USER for monty@localhost | +------------------------------------------------------------------+ | CREATE USER 'monty'@'localhost' PASSWORD EXPIRE INTERVAL 120 DAY | +------------------------------------------------------------------+ SHOW CREATE USER 'konstantin'@'localhost'; +------------------------------------------------------------+ | CREATE USER for konstantin@localhost | +------------------------------------------------------------+ | CREATE USER 'konstantin'@'localhost' PASSWORD EXPIRE NEVER | +------------------------------------------------------------+ SHOW CREATE USER 'amse'@'localhost'; +--------------------------------+ | CREATE USER for amse@localhost | +--------------------------------+ | CREATE USER 'amse'@'localhost' | +--------------------------------+
Проверка истечения срока действия паролей
Следующий запрос можно использовать для проверки срока действия текущих паролей для всех пользователей:
WITH password_expiration_info AS ( SELECT User, Host, IF( IFNULL(JSON_EXTRACT(Priv, '$.password_lifetime'), -1) = -1, @@global.default_password_lifetime, JSON_EXTRACT(Priv, '$.password_lifetime') ) AS password_lifetime, JSON_EXTRACT(Priv, '$.password_last_changed') AS password_last_changed FROM mysql.global_priv ) SELECT pei.User, pei.Host, pei.password_lifetime, FROM_UNIXTIME(pei.password_last_changed) AS password_last_changed_datetime, FROM_UNIXTIME( pei.password_last_changed + (pei.password_lifetime * 60 * 60 * 24) ) AS password_expiration_datetime FROM password_expiration_info pei WHERE pei.password_lifetime != 0 AND pei.password_last_changed IS NOT NULL UNION SELECT pei.User, pei.Host, pei.password_lifetime, FROM_UNIXTIME(pei.password_last_changed) AS password_last_changed_datetime, 0 AS password_expiration_datetime FROM password_expiration_info pei WHERE pei.password_lifetime = 0 OR pei.password_last_changed IS NULL;
Опция клиента --connect-expired-password
Клиент mariadb client --connect-expired-password указывает серверу, что клиент готов обработать режим песочницы с истекшим паролем (даже если была указана опция --batch).
См. также
- Управление блокировкой учетных записей и сроком действия паролей учебный видеоурок
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/user-password-expiry/