Spec-Zone .ru
спецификации, руководства, описания, API
|
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 -p
Password:******
ERROR 1862 (HY000): Your password has expired. To log in you mustchange it using a client that supports expired passwords.
Если сервер помещает клиент в режим песочницы, эти операции разрешаются в пределах клиентского сеанса:
Клиент может сбросить пароль учетной записи с SET PASSWORD
. Это изменяет строку mysql.user
таблица, связанная с текущим счетом, устанавливая password_expired
столбец
к 'N'
. После того, как пароль был сброшен, сервер восстанавливает
нормальный доступ для сеанса, так же как для последующих соединений, которые используют учетную запись.
Возможно "сбросить" пароль, устанавливая это в его текущую стоимость. Как хорошую политику, предпочтительно выбрать различный пароль.
Клиент может использовать SET
операторы. Это могло бы быть необходимо до сброса пароля; например,
если пароль учетной записи использует хеширующий формат, который требует old_passwords
системная переменная, которая будет установлена в
значение, отличающееся от его значения по умолчанию.
Для любой работы, не разрешенной в пределах сеанса, сервер возвращается ER_MUST_CHANGE_PASSWORD
ошибка:
mysql> USE test;
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
Как упомянуто ранее, разъединяет ли сервер клиент пароля с истекшим сроком или помещает это в режим песочницы, зависит от комбинации настроек клиента и сервера. Следующее обсуждение описывает соответствующие настройки и как они взаимодействуют.
На стороне клиента данный клиент указывает, может ли она обработать режим песочницы для паролей с истекшим сроком. Для клиентов, которые пользуются клиентской библиотекой C, есть два способа сделать это:
Передайте MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS
флаг
к mysql_options()
до соединения:
arg = 1;result = mysql_options(mysql, MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, &arg);
Передайте CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS
флаг к
mysql_real_connect()
во
время соединения:
mysql = mysql_real_connect(mysql, host, user, password, "test", port, unix_socket,CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS);
У другого MySQL Connectors есть их собственные соглашения для того, чтобы указать на готовность обработать режим песочницы. См. соответствующую документацию Соединителя.
На стороне сервера, если клиент указывает, что она может обработать истекшие пароли, сервер помещает это в режим песочницы.
Если клиент не указывает, что это может обработать истекшие пароли (или использует более старую версию
клиентской библиотеки, которая не может столь указать), действие сервера зависит от значения disconnect_on_expired_passwords
системная переменная:
Если disconnect_on_expired_passwords
включается (значение по умолчанию),
сервер разъединяет клиент с ER_MUST_CHANGE_PASSWORD_LOGIN
ошибка.
Если 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:
Режим песочницы изменяется, чтобы разрешить лучшее управление тем, как сервер обрабатывает клиентские соединения для учетных записей с паролями с истекшим сроком, и разрешать клиентам сигнализировать, способны ли они к обработке паролей с истекшим сроком:
disconnect_on_expired_passwords
системная переменная добавляется, который
управляет, как сервер обрабатывает учетные записи пароля с истекшим сроком.
Два флага добавляются к клиентской библиотеке API C: MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS
для mysql_options()
и CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS
для mysql_real_connect()
. Каждый флаг позволяет клиентской программе
указать, может ли он обработать режим песочницы для учетных записей с паролями с истекшим сроком.
MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS
включается для mysqltest безоговорочно, для mysql в интерактивном режиме, и для mysqladmin, если первая команда password
.
ER_MUST_CHANGE_PASSWORD_LOGIN
ошибка добавляется. Сервер возвращает эту
ошибку, когда это разъединяет клиент.
Параллельный с этими изменениями к режиму песочницы в MySQL Server и клиентской библиотеке API C, работа начинает изменять Соединители для соответствия к изменениям.