Spec-Zone .ru
спецификации, руководства, описания, API
|
SET PASSWORD [FORuser
] = { 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.)