Перейти к основному содержимому

ALTER USER

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

подсказка

Обычные пользователи могут использовать эту команду для изменения информации о себе. Только пользователи с ролью 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'

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

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

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

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

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

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

    -- Установить максимальное количество подключений пользователя.
    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' = '');

Ссылки