Перейти к основному содержимому
Версия: 2.0.x

ALTER USER

ALTER USER изменяет информацию о пользователе, включая пароль, метод аутентификации, роли по умолчанию и свойства пользователя (поддерживается начиная с версии v1.5.2).

подсказка

Обычные пользователи могут использовать эту команду для изменения информации о себе. Только пользователи с ролью user_admin могут изменять информацию о других пользователях.

Синтаксис

ALTER USER user_identity
[auth_option]
[default_role]
[DEFAULT ROLE <role_name>[, <role_name>, ...]]
[SET PROPERTIES ("key"="value", ...)]

Параметры

  • user_identity состоит из двух частей: "user_name" и "host", в формате username@'userhost'. Для части "host" вы можете использовать % для нечёткого соответствия. Если "host" не указан, по умолчанию используется "%", что означает, что пользователь может подключаться к Selena с любого хоста. Однако при использовании этого выражения с SET PROPERTIES для изменения свойств пользователя необходимо указать username вместо user_identity.

  • auth_option определяет метод аутентификации. В настоящее время поддерживаются три метода аутентификации: нативный пароль Selena, mysql_native_password и "authentication_ldap_simple". Нативный пароль Selena логически идентичен mysql_native_password, но немного отличается синтаксисом. Одна идентификация пользователя может использовать только один метод аутентификации. Вы можете использовать ALTER USER для изменения паролей и методов аутентификации пользователей.

    auth_option: {
    IDENTIFIED BY 'auth_string'
    IDENTIFIED WITH mysql_native_password BY 'auth_string'
    IDENTIFIED WITH mysql_native_password AS 'auth_string'
    IDENTIFIED WITH authentication_ldap_simple AS 'auth_string'

    }
    Метод аутентификацииПароль при создании пользователяПароль для входа
    Нативный парольОткрытый текст или шифротекстОткрытый текст
    mysql_native_password BYОткрытый текстОткрытый текст
    mysql_native_password WITHШифротекстОткрытый текст
    authentication_ldap_simpleОткрытый текстОткрытый текст

Примечание: Selena шифрует пароли пользователей перед их сохранением.

  • DEFAULT ROLE устанавливает роль по умолчанию для пользователя.

     -- Установить указанные роли в качестве ролей по умолчанию.
    DEFAULT ROLE <role_name>[, <role_name>, ...]
    -- Установить все роли пользователя, включая роли, которые будут назначены этому пользователю, в качестве ролей по умолчанию.
    DEFAULT ROLE ALL
    -- Роль по умолчанию не устанавливается, но роль public остаётся активной после входа пользователя.
    DEFAULT ROLE NONE

    Перед запуском ALTER USER для установки ролей по умолчанию убедитесь, что все роли назначены пользователям. Роли автоматически активируются после повторного входа пользователя.

  • SET PROPERTIES устанавливает свойства пользователя, включая максимальное количество подключений пользователя (max_user_connections), catalog, базу данных или сессионные переменные на уровне пользователя. Сессионные переменные уровня пользователя вступают в силу при входе пользователя. Эта функция поддерживается начиная с версии v1.5.2.

    -- Установить максимальное количество подключений пользователя.
    SET PROPERTIES ("max_user_connections" = "<Integer>")
    -- Установить catalog.
    SET PROPERTIES ("catalog" = "<catalog_name>")
    -- Установить базу данных.
    SET PROPERTIES ("catalog" = "<catalog_name>", "database" = "<database_name>")
    -- Установить сессионные переменные.
    SET PROPERTIES ("session.<variable_name>" = "<value>", ...)
    -- Очистить свойства, установленные для пользователя.
    SET PROPERTIES ("catalog" = "", "database" = "", "session.<variable_name>" = "");
    подсказка
    • SET PROPERTIES работает с пользователем, а не с идентификацией пользователя. Поэтому при изменении свойств пользователя необходимо указать username вместо user_identity в выражении ALTER USER.
    • Глобальные переменные и переменные только для чтения не могут быть установлены для конкретного пользователя.
    • Переменные вступают в силу в следующем порядке: SET_VAR > Session > User property > Global.
    • Вы можете использовать SHOW PROPERTY для просмотра свойств конкретного пользователя.

Примеры

Пример 1: Изменить пароль пользователя на пароль в открытом тексте.

ALTER USER 'jack' IDENTIFIED BY '123456';
ALTER USER jack@'172.10.1.10' IDENTIFIED WITH mysql_native_password BY '123456';

Пример 2: Изменить пароль пользователя на зашифрованный пароль.

ALTER USER jack@'172.10.1.10' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
ALTER USER jack@'172.10.1.10' IDENTIFIED WITH mysql_native_password AS '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';

Вы можете получить зашифрованный пароль с помощью функции password().

Пример 3: Изменить метод аутентификации на LDAP.

ALTER USER jack@'172.10.1.10' IDENTIFIED WITH authentication_ldap_simple;

Пример 4: Изменить метод аутентификации на LDAP и указать отличительное имя (DN) пользователя в LDAP.

ALTER USER jack@'172.10.1.10' IDENTIFIED WITH authentication_ldap_simple AS 'uid=jack,ou=company,dc=example,dc=com';

Пример 5: Изменить роли по умолчанию пользователя на db_admin и user_admin. Обратите внимание, что пользователю должны быть назначены эти две роли.

ALTER USER 'jack'@'192.168.%' DEFAULT ROLE db_admin, user_admin;

Пример 6: Установить все роли пользователя, включая роли, которые будут назначены этому пользователю, в качестве ролей по умолчанию.

ALTER USER 'jack'@'192.168.%' DEFAULT ROLE ALL;

Пример 7: Очистить все роли по умолчанию пользователя.

ALTER USER 'jack'@'192.168.%' DEFAULT ROLE NONE;

Примечание: По умолчанию роль public остаётся активной для пользователя.

Пример 8: Установить максимальное количество подключений пользователя на 600.

ALTER USER 'jack' SET PROPERTIES ("max_user_connections" = "600");

Пример 9: Установить catalog пользователя на hive_catalog.

ALTER USER 'jack' SET PROPERTIES ('catalog' = 'hive_catalog');

Пример 10: Установить базу данных пользователя на test_db в catalog по умолчанию.

ALTER USER 'jack' SET PROPERTIES ('catalog' = 'default_catalog', 'database' = 'test_db');

Пример 11: Установить сессионную переменную query_timeout на 600 для пользователя.

ALTER USER 'jack' SET PROPERTIES ('session.query_timeout' = '600');

Пример 12: Очистить свойства, установленные для пользователя.

ALTER USER 'jack' SET PROPERTIES ('catalog' = '', 'database' = '', 'session.query_timeout' = '');

Ссылки