ClickHouse/docs/ru/sql-reference/statements/create/user.md
2021-03-29 17:57:27 +03:00

5.5 KiB
Raw Blame History

toc_priority toc_title
39 Пользователь

CREATE USER

Создает аккаунты пользователей.

Синтаксис:

CREATE USER [IF NOT EXISTS | OR REPLACE] name1 [ON CLUSTER cluster_name1] 
        [, name2 [ON CLUSTER cluster_name2] ...]
    [NOT IDENTIFIED | IDENTIFIED {[WITH {no_password | plaintext_password | sha256_password | sha256_hash | double_sha1_password | double_sha1_hash}] BY {'password' | 'hash'}} | {WITH ldap SERVER 'server_name'} | {WITH kerberos [REALM 'realm']}]
    [HOST {LOCAL | NAME 'name' | REGEXP 'name_regexp' | IP 'address' | LIKE 'pattern'} [,...] | ANY | NONE]
    [DEFAULT ROLE role [,...]]
    [SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [READONLY | WRITABLE] | PROFILE 'profile_name'] [,...]

ON CLUSTER позволяет создавать пользователей в кластере, см. Распределенные DDL.

Идентификация

Существует несколько способов идентификации пользователя:

  • IDENTIFIED WITH no_password
  • IDENTIFIED WITH plaintext_password BY 'qwerty'
  • IDENTIFIED WITH sha256_password BY 'qwerty' or IDENTIFIED BY 'password'
  • IDENTIFIED WITH sha256_hash BY 'hash'
  • IDENTIFIED WITH double_sha1_password BY 'qwerty'
  • IDENTIFIED WITH double_sha1_hash BY 'hash'
  • IDENTIFIED WITH ldap SERVER 'server_name'
  • IDENTIFIED WITH kerberos or IDENTIFIED WITH kerberos REALM 'realm'

Пользовательский хост

Пользовательский хост — это хост, с которого можно установить соединение с сервером ClickHouse. Хост задается в секции HOST следующими способами:

  • HOST IP 'ip_address_or_subnetwork' — Пользователь может подключиться к серверу ClickHouse только с указанного IP-адреса или подсети. Примеры: HOST IP '192.168.0.0/16', HOST IP '2001:DB8::/32'. При использовании в эксплуатации указывайте только элементы HOST IP (IP-адреса и маски подсети), так как использование host и host_regexp может привести к дополнительной задержке.
  • HOST ANY — Пользователь может подключиться с любого хоста. Используется по умолчанию.
  • HOST LOCAL — Пользователь может подключиться только локально.
  • HOST NAME 'fqdn' — Хост задается через FQDN. Например, HOST NAME 'mysite.com'.
  • HOST NAME REGEXP 'regexp' — Позволяет использовать регулярные выражения pcre, чтобы задать хосты. Например, HOST NAME REGEXP '.*\.mysite\.com'.
  • HOST LIKE 'template' — Позволяет использовать оператор LIKE для фильтрации хостов. Например, HOST LIKE '%' эквивалентен HOST ANY; HOST LIKE '%.mysite.com' разрешает подключение со всех хостов в домене mysite.com.

Также, чтобы задать хост, вы можете использовать @ вместе с именем пользователя. Примеры:

  • CREATE USER mira@'127.0.0.1' — Эквивалентно HOST IP.
  • CREATE USER mira@'localhost' — Эквивалентно HOST LOCAL.
  • CREATE USER mira@'192.168.%.%' — Эквивалентно HOST LIKE.

!!! info "Внимание" ClickHouse трактует конструкцию user_name@'address' как имя пользователя целиком. То есть технически вы можете создать несколько пользователей с одинаковыми user_name, но разными частями конструкции после @, но лучше так не делать.

Примеры

Создать аккаунт mira, защищенный паролем qwerty:

CREATE USER mira HOST IP '127.0.0.1' IDENTIFIED WITH sha256_password BY 'qwerty'

Пользователь mira должен запустить клиентское приложение на хосте, где запущен ClickHouse.

Создать аккаунт john, назначить на него роли, сделать данные роли ролями по умолчанию:

CREATE USER john DEFAULT ROLE role1, role2

Создать аккаунт john и установить ролями по умолчанию все его будущие роли:

CREATE USER user DEFAULT ROLE ALL

Когда роль будет назначена аккаунту john, она автоматически станет ролью по умолчанию.

Создать аккаунт john и установить ролями по умолчанию все его будущие роли, кроме role1 и role2:

CREATE USER john DEFAULT ROLE ALL EXCEPT role1, role2