Spec-Zone .ru
спецификации, руководства, описания, API

6.3.6. Истечение пароля и Режим Песочницы

MySQL 5.7 обеспечивает возможность истечения пароля, чтобы позволить администраторам базы данных истечь пароли учетной записи и потребовать, чтобы пользователи сбросили свой пароль. Этот раздел описывает, как истечение пароля работает.

Чтобы истечь пароль учетной записи, используйте ALTER USER оператор. Например:

ALTER USER 'myuser'@'localhost' PASSWORD EXPIRE;

Этот оператор изменяет строку mysql.user таблица, связанная с именованной учетной записью, устанавливая password_expired столбец к 'Y'. Это не влияет ни на какие текущие соединения, которые учетная запись имеет открытый. Для каждого последующего соединения, которое использует учетную запись, сервер или разъединяет клиент или обрабатывает клиент в "режиме песочницы,", в который сервер разрешает клиенту только те операции, необходимые, чтобы сбросить пароль с истекшим сроком. (Меры, предпринятые сервером, зависят от обеих настроек клиента и сервера.)

Если сервер разъединяет клиент, он возвращается ER_MUST_CHANGE_PASSWORD_LOGIN ошибка:

shell> mysql -u myuser
        -pPassword: ******ERROR 1862 (HY000): Your password has expired. To log in you mustchange it using a client that supports expired passwords.

Если сервер помещает клиент в режим песочницы, эти операции разрешаются в пределах клиентского сеанса:

Для любой работы, не разрешенной в пределах сеанса, сервер возвращается ER_MUST_CHANGE_PASSWORD ошибка:

mysql> USE test;ERROR 1820 (HY000): You must SET PASSWORD before executing this statement

Как упомянуто ранее, разъединяет ли сервер клиент пароля с истекшим сроком или помещает это в режим песочницы, зависит от комбинации настроек клиента и сервера. Следующее обсуждение описывает соответствующие настройки и как они взаимодействуют.

На стороне клиента данный клиент указывает, может ли она обработать режим песочницы для паролей с истекшим сроком. Для клиентов, которые пользуются клиентской библиотекой C, есть два способа сделать это:

У другого MySQL Connectors есть их собственные соглашения для того, чтобы указать на готовность обработать режим песочницы. См. соответствующую документацию Соединителя.

На стороне сервера, если клиент указывает, что она может обработать истекшие пароли, сервер помещает это в режим песочницы.

Если клиент не указывает, что это может обработать истекшие пароли (или использует более старую версию клиентской библиотеки, которая не может столь указать), действие сервера зависит от значения disconnect_on_expired_passwords системная переменная:

Предыдущие настройки клиента и сервера применяются только для учетных записей с паролями с истекшим сроком. Если клиент соединяет использование пароля нес истекшим сроком, сервер обычно обрабатывает клиент.