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

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

Коллеги всем привет.

В сегодняшней статье я вам хочу рассказать о такой возможности как истечение срока действия пароля пользователя в MariaDB. Истечение срока действия пароля позволяет администраторам устанавливать срок действия паролей пользователей вручную или автоматически. Мы рассмотрим оба варианта.

 

Содержимое статьи:

  1. Проверка срока действия пароля всех пользователей базы данных MariaDB.
  2. Системная переменная default_password_lifetime.
  3. Установка срока действия пароля пользователю.
  4. Снимаем ограничения срока действия пароля пользователю.
  5. Срок действия пароля по умолчанию.

 

1. Проверка срока действия пароля всех пользователей базы данных MariaDB.

Для начала давайте проверим срок действия паролей по всем пользователям, для этого воспользуемся запросом.

mariadb> 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;

mariadb_user_password_expiry

Как видим на скриншоте поле password_lifetime имеет значения 0, это значит что по умолчанию срок действия пароля для всех пользователей в базе данных MariaDB не установлен.


 

2. Системная переменная default_password_lifetime.

В базе данных MariaDB есть системная переменная default_password_lifetime, по умолчанию она имеет значения 0, это значит что срок действия пароля для пользователей не устанавливается. Для проверки значения переменной воспользуемся запросом:

mariadb> SHOW VARIABLES LIKE 'default_password_lifetime';

mariadb_user_password_expiry

 

Давайте поменяем значения переменной default_password_lifetime, добавим чтобы пароль для пользователей истекал через 1 день.

mariadb> set global default_password_lifetime = 1;

mariadb_user_password_expiry

mariadb_user_password_expiry

Как только мы поменяли значения переменной default_password_lifetime на один день, то значения поля password_expiration_datetime тоже поменялось. Значения в этом поле указывает на то в какое время будет просрочен срок действия пароля пользователя.


 

3. Установка срока действия пароля пользователю.

При создании нового пользователя можно явно указать через какое время у пользователя истечет пароль. Давайте создадим нового пользователя и явно укажем что срок действия его пароля истечет через два дня.

mariadb> CREATE USER 'potomka'@'localhost' IDENTIFIED BY 'Qwertysdf3SDasd3%' PASSWORD EXPIRE INTERVAL 2 DAY;

mariadb_user_password_expiry

Параметр PASSWORD EXPIRE INTERVAL 2 DAY как раз и указывает через сколько дней истечет срок действия пароля.

 

mariadb_user_password_expiry

После создания пользователя мы видим что поле password_lifetime для пользователя имеет значения 2 дня.


 

4. Снимаем ограничения срока действия пароля пользователю.

Допустим у нас potomka это технологическая учетная запись, и устанавливая для неё срок действия пароля это очень плохая практика, так как после истечения пароля ваше приложения перестанет работать потому что база данных MariaDB не пропустит учетную запись в которой пароль нужно уже менять. Чтобы решить данную задачу можно учетной записи явно указать, чтобы её пароль был вечным и не имел срока давности.

mariadb> ALTER USER 'potomka'@'localhost' PASSWORD EXPIRE NEVER;

mariadb_user_password_expiry

Параметр PASSWORD EXPIRE NEVER явно указывает, чтобы пароль не имел срока давности и был вечным.

 

mariadb_user_password_expiry

Как видим в результате для учетной записи potomka значения поля password_lifetime стало 0 дней и поле password_expiration_datetime тоже стало 0 дней.


 

5. Срок действия пароля по умолчанию.

Давайте представим ситуацию, что вы очень часто создаете учетные записи и постоянно помнить на сколько дней нужно устанавливать срок действия пароля не очень удобно. Для этого как раз и существует переменная default_password_lifetime. Мы выше уже установили её значения, чтобы все пароли истекали через один день, и теперь когда мы создаем нового пользователя, то вместо параметра PASSWORD EXPIRE INTERVAL 1 DAY, мы будем указывать PASSWORD EXPIRE DEFAULT,  это значит срок действия пароля по умолчанию, а оно равно значению переменной default_password_lifetime, а значения переменной default_password_lifetime у нас установлен один день.

mariadb> ALTER USER 'potomka'@'localhost' PASSWORD EXPIRE DEFAULT;

mariadb_user_password_expiry

mariadb_user_password_expiry


 

Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.

ПОХОЖИЕ СТАТЬИ

MariaDB - ERROR Incorrect definition of table
MariaDB - ERROR Incorrect definition of table
MARIADB
Читать далее
Mariabackup резервное копирование - Сжатие gzip
Mariabackup резервное копирование - Сжатие gzip
MARIADB
Читать далее
Mariabackup ошибка - Error writing file UNKNOWN errno 32 Broken pipe
Mariabackup ошибка - Error writing file UNKNOWN errno 32 Broken pipe
MARIADB
Читать далее