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

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

MySQL 5.6 представляет возможность истечения пароля, чтобы позволить администраторам базы данных истечь пароли учетной записи и потребовать, чтобы пользователи сбросили свой пароль. Сразу после обсуждения описывает, как истечение пароля работает в настоящий момент. Позже, разработка этой возможности детализируется, как это произошло более чем несколько версий как фон, чтобы помочь Вам понять, какие функции доступны когда. Однако, чтобы гарантировать, что можно использовать в своих интересах все функции и исправления, следует использовать новую доступную версию MySQL 5.6 если возможный.

Как Истечение Пароля Работает

Чтобы истечь пароль учетной записи, используйте 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 системная переменная:

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

Разработка Возможности Истечения пароля

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

MySQL 5.6.6: Начальная реализация истечения пароля

password_expired столбец представляется в mysql.user таблица, чтобы позволить DBA истечь пароли учетной записи. Значение по умолчанию столбца 'N' (не истекший).

ALTER USER оператор представляется как интерфейс SQL для того, чтобы установить password_expired столбец к 'Y'.

Соединения, которые используют учетную запись с паролем с истекшим сроком, вводят "режим песочницы", который разрешает только SET PASSWORD операторы. Для других операторов сервер возвращается ER_MUST_CHANGE_PASSWORD ошибка. Намерение состоит в том, чтобы вынудить клиент сбросить пароль прежде, чем сервер разрешит любые другие операции. SET PASSWORD сбрасывает пароль учетной записи и наборы password_expired к 'N'.

Ошибка в начальной реализации - это ALTER USER наборы Password столбец в mysql.user таблица к пустой строке. Импликация - то, что пользователи должны ожидать до MySQL 5.6.7, чтобы использовать этот оператор.

MySQL 5.6.7:

ALTER USER фиксируется, чтобы не установить Password столбец к пустой строке.

MySQL 5.6.8:

ALTER USER может использоваться в качестве готового оператора.

пароль mysqladmin делается способным к установке паролей для учетных записей с собственными или старо-собственными паролями с истекшим сроком.

Режим песочницы изменяется, чтобы разрешить клиентам выполняться SET операторы в дополнение к SET PASSWORD Запрещение SET предотвращенные клиенты, которые должны были установить old_passwords от сброса их пароля. Это также повредило некоторые Соединители, которые используют SET экстенсивно во время соединения, чтобы инициализировать среду сеанса.

MySQL 5.6.9:

Режим песочницы изменяется на разрешение SET PASSWORD только если учетная запись, названная в операторе, соответствует учетной записи клиент, аутентифицируемый как.

MySQL 5.6.10:

Режим песочницы изменяется, чтобы разрешить лучшее управление тем, как сервер обрабатывает клиентские соединения для учетных записей с паролями с истекшим сроком, и разрешать клиентам сигнализировать, способны ли они к обработке паролей с истекшим сроком:

Параллельный с этими изменениями к режиму песочницы в MySQL Server и клиентской библиотеке API C, работа начинает изменять Соединители для соответствия к изменениям.