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

CREATE USER

CREATE USER создает пользователя Selena. В Selena "user_identity" уникально идентифицирует пользователя. Начиная с версии 3.3.3, Selena поддерживает установку свойств пользователя при его создании.

подсказка

Только пользователи с ролью user_admin имеют привилегии для выполнения этой операции.

Синтаксис

CREATE USER [IF NOT EXISTS] <user_identity>
[auth_option]
[DEFAULT ROLE <role_name>[, <role_name>, ...]]
[PROPERTIES ("key"="value", ...)]

Параметры

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

    Правила именования пользователей см. в разделе Системные ограничения.

  • auth_option указывает метод аутентификации. В настоящее время поддерживается пять методов аутентификации: встроенный пароль Selena, mysql_native_password, authentication_ldap_simple, аутентификация JSON Web Token (JWT) и аутентификация OAuth 2.0. Встроенный пароль Selena логически совпадает с mysql_native_password, но немного отличается синтаксисом. Один идентификатор пользователя может использовать только один метод аутентификации.

    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'
    IDENTIFIED WITH authentication_jwt [AS 'auth_properties']
    IDENTIFIED WITH authentication_oauth2 [AS 'auth_properties']
    }
    Метод аутентификацииПароль при создании пользователяПароль при входе
    Native passwordОткрытый текст или шифротекстОткрытый текст
    mysql_native_password BYОткрытый текстОткрытый текст
    mysql_native_password WITHШифротекстОткрытый текст
    authentication_ldap_simpleОткрытый текстОткрытый текст
    примечание

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

    Подробности о auth_properties для аутентификации JSON Web Token (JWT) и OAuth 2.0 см. в соответствующих документах:

  • DEFAULT ROLE <role_name>[, <role_name>, ...]: Если этот параметр указан, роли автоматически назначаются пользователю и активируются по умолчанию при входе пользователя в систему. Если не указан, у пользователя не будет никаких привилегий. Убедитесь, что все указанные роли уже существуют.

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

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

Примеры

Пример 1: Создание пользователя с паролем в открытом тексте без указания хоста, что эквивалентно jack@'%'.

CREATE USER 'jack' IDENTIFIED BY '123456';

Пример 2: Создание пользователя с паролем в открытом тексте и разрешением входа с адреса '172.10.1.10'.

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

Пример 3: Создание пользователя с зашифрованным паролем и разрешением входа с адреса '172.10.1.10'.

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

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

Пример 4: Создание пользователя, которому разрешен вход с доменного имени 'example_domain'.

CREATE USER 'jack'@['example_domain'] IDENTIFIED BY '123456';

Пример 5: Создание пользователя, использующего аутентификацию LDAP.

CREATE USER jack@'172.10.1.10' IDENTIFIED WITH authentication_ldap_simple;

Пример 6: Создание пользователя, использующего аутентификацию LDAP, с указанием distinguished name (DN) пользователя в LDAP.

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

Пример 7: Создание пользователя, которому разрешен вход из подсети '192.168', с установкой db_admin и user_admin в качестве ролей по умолчанию.

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

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

CREATE USER 'jack'@'192.168.%' PROPERTIES ("max_user_connections" = "600");

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

CREATE USER 'jack'@'192.168.%' PROPERTIES ('catalog' = 'hive_catalog');

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

CREATE USER 'jack'@'192.168.%' PROPERTIES ('catalog' = 'default_catalog', 'database' = 'test_db');

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

CREATE USER 'jack'@'192.168.%' PROPERTIES ('session.query_timeout' = '600');

Пример 12: Создание пользователя с аутентификацией JSON Web Token.

CREATE USER tom IDENTIFIED WITH authentication_jwt AS
'{
"jwks_url": "http://localhost:38080/realms/master/protocol/jwt/certs",
"principal_field": "preferred_username",
"required_issuer": "http://localhost:38080/realms/master",
"required_audience": "selena"
}';

Пример 13: Создание пользователя с аутентификацией OAuth 2.0.

CREATE USER tom IDENTIFIED WITH authentication_oauth2 AS
'{
"auth_server_url": "http://localhost:38080/realms/master/protocol/openid-connect/auth",
"token_server_url": "http://localhost:38080/realms/master/protocol/openid-connect/token",
"client_id": "12345",
"client_secret": "LsWyD9vPcM3LHxLZfzJsuoBwWQFBLcoR",
"redirect_url": "http://localhost:8030/api/oauth2",
"jwks_url": "http://localhost:38080/realms/master/protocol/openid-connect/certs",
"principal_field": "preferred_username",
"required_issuer": "http://localhost:38080/realms/master",
"required_audience": "12345"
}';