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

13.7.1.7. SET PASSWORD Синтаксис

SET PASSWORD [FOR user] =    {        PASSWORD('cleartext password')      | OLD_PASSWORD('cleartext password')      | 'encrypted
        password'    }

SET PASSWORD оператор присваивает пароль существующей учетной записи пользователя MySQL. Когда read_only системная переменная включается, SUPER полномочие обязано использовать SET PASSWORD, в дополнение к чему могли бы требоваться другие полномочия.

Если пароль определяется, используя PASSWORD() или OLD_PASSWORD() функция, открытый текст, который (незашифрованный) пароль должен быть дан как параметр функции, которая хеширует пароль и возвращает зашифрованную строку пароля. Если пароль определяется, не используя ни одну функцию, это должно быть уже зашифрованное значение пароля как литеральная строка. Во всех случаях зашифрованная строка пароля должна быть в формате, требуемом методом аутентификации, используемым для учетной записи.

Без FOR user пункт, этот оператор устанавливает пароль для текущего пользователя. (Чтобы видеть который учетная запись сервер, аутентифицируемый Вы как, вызовите CURRENT_USER() функция.) Любой клиент, который успешно соединяется с сервером, используя неанонимную учетную запись, может изменить пароль для той учетной записи.

С a FOR user пункт, этот оператор устанавливает пароль для именованного пользователя. Вы должны иметь UPDATE полномочие для mysql база данных, чтобы сделать это. Имя пользователя использует формат, описанный в Разделе 6.2.3, "Определение Имен учетной записи". user значение должно быть дано как 'user_name'@'host_name', где 'user_name' и 'host_name' точно как перечисляются в User и Host столбцы mysql.user строка таблицы. (Если Вы определяете только имя пользователя, имя хоста '%' используется.) Например, чтобы установить пароль для учетной записи с User и Host значения столбцов 'bob' и '%.example.org', запишите оператор как это:

SET PASSWORD FOR 'bob'@'%.example.org' = PASSWORD('cleartext
        password');

Это эквивалентно следующим операторам:

UPDATE mysql.user SET Password=PASSWORD('cleartext
        password')  WHERE User='bob' AND Host='%.example.org';FLUSH PRIVILEGES;

Другой способ установить пароль состоит в том, чтобы использовать GRANT:

GRANT USAGE ON *.* TO 'bob'@'%.example.org' IDENTIFIED BY 'cleartext password';

old_passwords системное значение переменной определяет хеширующий метод, используемый PASSWORD(). Если Вы определяете пароль, используя ту функцию и SET PASSWORD отклоняет пароль, как не являющийся в корректном формате, может быть необходимо установить old_passwords изменить хеширующий метод. Для описаний разрешенных значений см. Раздел 5.1.4, "Системные Переменные Сервера".

Для получения дополнительной информации об установке паролей, см. Раздел 6.3.5, "Присваивая Пароли Учетной записи"

Важный

SET PASSWORD может быть записан в журналах сервера или в файле истории такой как ~/.mysql_history, что означает, что пароли в виде открытого текста могут быть считаны любым имеющим доступ для чтения к той информации. См. Раздел 6.1.2, "Сохраняя Пароли, Безопасные".

Предостережение

Если Вы соединяетесь с MySQL 4.1 или более поздним сервером, используя пред4.1 клиентских программы, не изменяйте свой пароль без Раздела первого чтения 6.1.2.4, "Пароль, Хеширующий в MySQL". Формат хеширующего пароля значения по умолчанию, измененный в MySQL 4.1, и если Вы изменяете свой пароль, он мог бы быть сохранен, используя хеширующий формат, который пред4.1 клиента не могут генерировать, таким образом препятствуя тому Вам соединиться с сервером позже.

Если Вы используете MySQL Replication, знают что, в настоящий момент, пароль, используемый ведомым устройством репликации в качестве части a CHANGE MASTER TO оператор эффективно ограничивается 32 символами в длине; пароль может быть более длительным, но любые избыточные символы являются усеченными. Это не происходит ни из-за какого предела, наложенного MySQL Server обычно, а скорее является проблемой, определенной для MySQL Replication. (Для получения дополнительной информации см. Ошибку #43439.)