Операции с пользователями
-
CREATE USER— Создание нового пользователя -
ALTER USER— Изменение атрибутов пользователя -
DROP USER— Сброс пользователя -
DESCRIBE USER— Вывод информации о пользователе -
SHOW USERS— Вывод списка всех пользователей -
GRANT ROLE— Назначение пользователям ролей -
REVOKE ROLE— Отзыв ролей у пользователей
Создание нового пользователя
CREATE [OR REPLACE] USER [IF NOT EXISTS] <user_name>
DEFAULT WORKER POOL <pool_id>
IDENTIFIED BY (TRUST <ip_address> | PASSWORD '<user_password>')
[DEFAULT SCHEMA <schema_name>]
[SELECT LIMIT <limit>]
[QUERY TIMEOUT <timeout>]
[SPILL SIZE '<size>'];
Создает нового пользователя с указанным именем и другими параметрами.
Параметр DEFAULT WORKER POOL
Обязательный параметр DEFAULT WORKER POOL <pool_id> устанавливает вычислительный пул <pool_id> по умолчанию для создаваемого пользователя.
Параметр IDENTIFIED BY
Обязательный параметр IDENTIFIED BY ... устанавливает проверку подлинности создаваемого пользователя одним из двух способов:
-
через IP адрес
IDENTIFIED BY TRUST <ip_address> -
через пароль
IDENTIFIED BY PASSWORD '<user_password>'(с использованием алгоритмаSCRAM-SHA-256)
Параметр DEFAULT SCHEMA
Опциональный параметр DEFAULT SCHEMA устанавливает схему по умолчанию для создаваемого пользователя. Эта схема будет использоваться по умолчанию в случаях, когда создаваемый пользователь будет делать запросы к таблицам без явного указания схемы.
| Схему по умолчанию можно установить для текущего сеанса: Установка схемы по умолчанию. |
Параметр SELECT LIMIT
Опциональный параметр SELECT LIMIT устанавливает лимит по умолчанию для результатов запросов SELECT для создаваемого пользователя. Дефолтное значение лимита по умолчанию составляет 1000.
Это ограничение применяется ко всем запросам SELECT, в которых явно не указан лимит, за исключением вложенных запросов SELECT (в них ограничение отсутствует).
|
| Увеличить лимит может быть полезно, например, для пользователя, из-под учетной записи которого работает BI-система, если она выгружает большие датасеты для визуализаций. |
Параметр QUERY TIMEOUT
Опциональный параметр QUERY TIMEOUT устанавливает значение таймаута для выполнения запросов SQL для создаваемого пользователя. Значение задается в секундах.
По умолчанию значение таймаута составляет 3600.
Параметр SPILL SIZE
Опциональный параметр SPILL SIZE устанавливает размер спилла (объема места на диске для сохранения промежуточных результатов запроса) для создаваемого пользователя. Значение задается текстовой строкой в кавычках с указанием единиц памяти.
По умолчанию размер спилла составляет 200GB.
Модификатор OR REPLACE
Если указан опциональный модификатор OR REPLACE, то это действие эквивалентно удалению
текущего пользователя и созданию нового пользователя с тем же именем пользователя. Вновь созданный пользователь не наследует никаких ролей и атрибутов.
Модификатор IF NOT EXISTS
Если указан опциональный модификатор IF NOT EXISTS, то запрос будет выполнен только в том случае, если пользователь с именем <user_name> не существует, в противном случае ничего не произойдет.
Модификаторы OR REPLACE и IF NOT EXISTS являются взаимоисключающими. Если указать их оба, это приведет к ошибке.
|
Посмотреть пример
CREATE USER tengri_user
DEFAULT WORKER POOL client_compute
IDENTIFIED BY TRUST '127.0.0.1'
DEFAULT SCHEMA demo
SELECT LIMIT 1000000
QUERY TIMEOUT 7200
SPILL SIZE '400GB';
Привилегии вновь созданного пользователя
После создания новый пользователь имеет следующие привилегии:
-
USAGE,CREATE TABLEиALLна все существующие и будущие таблицы и представления в схемах:-
public -
raw -
дефолтная схема пользователя (если она была задана)
-
-
USAGEиALLна все существующие и будущие таблицы и представления в схемах:-
temp -
pg_catalog -
system -
information_schema
-
-
USAGEна дефолтный вычислительный пул пользователя
Изменение атрибутов пользователя
ALTER USER [IF EXISTS] <user_name>
RENAME TO <new_name>;
ALTER USER [IF EXISTS] <user_name>
SET DEFAULT WORKER POOL <pool_id>;
ALTER USER [IF EXISTS] <user_name>
IDENTIFIED BY TRUST <ip_address>;
ALTER USER [IF EXISTS] <user_name>
IDENTIFIED BY PASSWORD '<user_password>';
ALTER USER [IF EXISTS] <user_name>
DEFAULT SCHEMA <schema_name>;
ALTER USER [IF EXISTS] <user_name>
SELECT LIMIT <limit>;
ALTER USER [IF EXISTS] <user_name>
QUERY TIMEOUT <timeout>;
ALTER USER [IF EXISTS] <user_name>
SPILL SIZE '<size>';
Изменяет атрибуты пользователя:
-
RENAME TO <new_name>— атомарная операция, которая переименовывает пользователя на новое имя. Никакие другие свойства данного пользователя (предоставленные роли, привилегии и т.д.) при этом не изменяются. -
SET DEFAULT WORKER POOL <pool_id>— см. ПараметрDEFAULT WORKER POOL. -
IDENTIFIED BY TRUST <ip_address>— см. ПараметрIDENTIFIED BY. -
IDENTIFIED BY PASSWORD '<user_password>'— см. ПараметрIDENTIFIED BY. -
DEFAULT SCHEMA <schema_name>— см. ПараметрDEFAULT SCHEMA. -
SELECT LIMIT <limit>— см. ПараметрSELECT LIMIT. -
QUERY TIMEOUT <timeout>— см. ПараметрQUERY TIMEOUT. -
SPILL SIZE '<size>'— см. ПараметрSPILL SIZE.
Опциональный модификатор IF EXISTS ограничивает запрос только теми случаями, в которых указанный объект существует.
Посмотреть пример
ALTER USER tengri_user
DEFAULT WORKER POOL client_compute
IDENTIFIED BY PASSWORD 'CHANGE-ME!'
DEFAULT SCHEMA demo
SELECT LIMIT 1000000
QUERY TIMEOUT 7200
SPILL SIZE '400GB';
Сброс пользователя
DROP USER [IF EXISTS] <user_name>;
Полностью удаляет пользователя из системы.
Не сохраняется ничего, включая предоставленные роли и права доступа.
| Возможно, что некоторые объекты потеряют права доступа. |
Опциональный модификатор IF EXISTS ограничивает запрос только теми случаями, в которых указанный объект существует.
Вывод информации о пользователе
DESC[RIBE] USER <user_name>;
Выводит всю информацию о пользователе, включая его атрибуты и значения по умолчанию.
Вывод списка всех пользователей
SHOW USERS;
Выводит список всех пользователей с их атрибутами.
Формат вывода:
+------+---------------------+----------------+------------------+-------------+--------+--------+---------------+------------+--------------+
| name | default_worker_pool | default_schema | active_workspace | auth_method | active | system | query_timeout | spill_size | select_limit |
+------+---------------------+----------------+------------------+-------------+--------+--------+---------------+------------+--------------+
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
+------+---------------------+----------------+------------------+-------------+--------+--------+---------------+------------+--------------+