Spec-Zone.ru › MariaDB

Срок действия пароля пользователя

MariaDB, начиная с 10.4.3

Срок действия пароля пользователя был введён в 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).

См. также

  • Управление блокировкой учетных записей и сроком действия паролей учебный видеоурок
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API