УСТАНОВКА ПАРОЛЯ
Синтаксис
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 и новее, 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 и ранее, 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 и новее учетная запись пользователя может быть определена для использования нескольких плагинов аутентификации в определенном порядке приоритетов. Этот конкретный сценарий может быть более заметен в этих версиях, так как учетная запись может быть связана с некоторыми плагинами аутентификации, которые требуют пароля, и некоторыми, которые не требуют.
Пример
Например, если у вас была запись со значениями столбцов User и Host 'bob' и '%.loc.gov', вы бы написали оператор так:
SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');
Если вы хотите удалить пароль для пользователя, вы бы сделали:
SET PASSWORD FOR 'bob'@localhost = PASSWORD("");
См. также
- Плагины проверки паролей - позволяет установить базовые критерии для паролей
ALTER USER
© 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/