Spec-Zone.ru › MariaDB

УСТАНОВКА ПАРОЛЯ

Синтаксис

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

Описание

Оператор SET PASSWORD присваивает пароль существующему учетной записи пользователя MariaDB.

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

OLD_PASSWORD() следует использовать только если ваши клиенты MariaDB/MySQL очень старые (< 4.0.0).

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

С фрагментом FOR, этот оператор устанавливает пароль для конкретной учетной записи на текущем серверном хосте. Это могут сделать только клиенты, имеющие привилегию UPDATE для базы данных mysql. Значение пользователя должно быть в формате user_name@host_name, где user_name и host_name точно такие же, как указано в столбцах User и Host в записи таблицы mysql.user (или представления в MariaDB-10.4 и новее).

Аргумент функции PASSWORD() и пароль, предоставляемый клиентам MariaDB, могут иметь произвольную длину.

Поддержка плагинов аутентификации

MariaDB начиная с 10.4

В MariaDB 10.4 и новее, SET PASSWORD (с или без PASSWORD()) работает для учетных записей, аутентифицированных с помощью любого плагина аутентификации, поддерживающего пароли, хранящиеся в таблице mysql.global_priv.

Плагины аутентификации ed25519, mysql_native_password, и mysql_old_password хранят пароли в таблице mysql.global_priv.

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

Плагины аутентификации unix_socket, named_pipe, gssapi, и pam не хранят пароли в таблице mysql.global_priv. Эти плагины аутентификации полагаются на другие методы для аутентификации пользователя.

Если вы попытаетесь выполнить SET PASSWORD для учетной записи, аутентифицирующейся с помощью одного из этих плагинов аутентификации, не хранящих пароль в таблице mysql.global_priv, то MariaDB Server выдаст предупреждение, подобное следующему:

SET PASSWORD is ignored for users authenticating via unix_socket plugin

См. Аутентификация начиная с MariaDB 10.4 для обзора изменений в аутентификации в MariaDB 10.4.

MariaDB до 10.3

В MariaDB 10.3 и ранее, SET PASSWORD (с или без PASSWORD()) работает только для учетных записей, аутентифицированных с помощью плагинов аутентификации mysql_native_password или mysql_old_password.

Учетные записи пользователей без паролей

Учетные записи пользователей не всегда требуют паролей для входа.

Плагины аутентификации unix_socket, named_pipe и gssapi не требуют пароля для аутентификации пользователя.

Плагин аутентификации pam может или не может потребовать пароль для аутентификации пользователя, в зависимости от конкретной конфигурации.

Плагины аутентификации mysql_native_password и mysql_old_password требуют паролей для аутентификации, но пароль может быть пустым. В этом случае пароль не требуется.

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

MariaDB начиная с 10.4

В MariaDB 10.4 и новее учетная запись пользователя может быть определена для использования нескольких плагинов аутентификации в определенном порядке приоритетов. Этот конкретный сценарий может быть более заметен в этих версиях, так как учетная запись может быть связана с некоторыми плагинами аутентификации, которые требуют пароля, и некоторыми, которые не требуют.

Пример

Например, если у вас была запись со значениями столбцов User и Host 'bob' и '%.loc.gov', вы бы написали оператор так:

SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');

Если вы хотите удалить пароль для пользователя, вы бы сделали:

SET PASSWORD FOR 'bob'@localhost = PASSWORD("");

См. также

  • Плагины проверки паролей - позволяет установить базовые критерии для паролей
  • ALTER USER
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительную проверку MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/set-password/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API