- Выдаёт привилегии учётным записям пользователей ClickHouse или ролям.
- Назначает роли учётным записям пользователей или другим ролям.
Для отзыва привилегий используйте оператор REVOKE. Список выданных привилегий также можно вывести с помощью оператора SHOW GRANTS.
Синтаксис предоставления привилегий
GRANT [ON CLUSTER cluster_name] privilege[(column_name [,...])] [,...] ON {db.table[*]|db[*].*|*.*|table[*]|*} TO {user | role | CURRENT_USER} [,...] [WITH GRANT OPTION] [WITH REPLACE OPTION]privilege— тип привилегии.role— роль пользователя ClickHouse.user— учетная запись пользователя ClickHouse.
Условие WITH GRANT OPTION дает user или role разрешение выполнять запрос GRANT. Пользователи могут предоставлять привилегии того же или более узкого уровня действия, чем у них самих.
Условие WITH REPLACE OPTION заменяет старые привилегии новыми для user или role; если оно не указано, привилегии добавляются.
Синтаксис назначения роли
GRANT [ON CLUSTER cluster_name] role [,...] TO {user | another_role | CURRENT_USER} [,...] [WITH ADMIN OPTION] [WITH REPLACE OPTION]role— роль пользователя ClickHouse.user— учётная запись пользователя ClickHouse.
Предложение WITH ADMIN OPTION предоставляет привилегию ADMIN OPTION пользователю user или роли role.
Предложение WITH REPLACE OPTION заменяет старые роли новой ролью для user или role; если оно не указано, роли добавляются.
Синтаксис GRANT CURRENT GRANTS
GRANT CURRENT GRANTS{(privilege[(column_name [,...])] [,...] ON {db.table|db.*|*.*|table|*}) | ON {db.table|db.*|*.*|table|*}} TO {user | role | CURRENT_USER} [,...] [WITH GRANT OPTION] [WITH REPLACE OPTION]privilege— Тип привилегии.role— Роль пользователя ClickHouse.user— Учётная запись пользователя ClickHouse.
Использование оператора CURRENT GRANTS позволяет предоставить все указанные привилегии указанному пользователю или роли.
Если не указана ни одна привилегия, указанный пользователь или роль получит все доступные привилегии для CURRENT_USER.
Использование
Чтобы использовать GRANT, у вашей учетной записи должна быть привилегия GRANT OPTION. Вы можете выдавать привилегии только в пределах привилегий своей учетной записи.
Например, администратор выдал привилегии учетной записи john с помощью запроса:
GRANT SELECT(x,y) ON db.table TO john WITH GRANT OPTIONЭто означает, что john имеет разрешение выполнять:
SELECT x,y FROM db.table.SELECT x FROM db.table.SELECT y FROM db.table.
john не может выполнить SELECT z FROM db.table. Запрос SELECT * FROM db.table также недоступен. При обработке этого запроса ClickHouse не возвращает никаких данных, даже x и y. Единственное исключение — если таблица содержит только столбцы x и y. В этом случае ClickHouse возвращает все данные.
Кроме того, у john есть привилегия GRANT OPTION, поэтому он может выдавать другим пользователям привилегии того же или меньшего уровня.
Доступ к базе данных system всегда разрешён (поскольку эта база данных используется для обработки запросов).
В одном запросе можно предоставить несколько привилегий нескольким учётным записям. Запрос GRANT SELECT, INSERT ON *.* TO john, robin позволяет учётным записям john и robin выполнять запросы INSERT и SELECT для всех таблиц во всех базах данных на сервере.
Привилегии с подстановочными знаками
При указании привилегий можно использовать звёздочку (*) вместо имени таблицы или базы данных. Например, запрос GRANT SELECT ON db.* TO john позволяет john выполнять запрос SELECT для всех таблиц в базе данных db.
Также можно опустить имя базы данных. В этом случае привилегии выдаются для текущей базы данных.
Например, GRANT SELECT ON * TO john выдаёт привилегию для всех таблиц в текущей базе данных, а GRANT SELECT ON mytable TO john выдаёт привилегию для таблицы mytable в текущей базе данных.
Вы также можете ставить звёздочки в конце имени таблицы или базы данных. Эта возможность позволяет выдавать привилегии для абстрактного префикса пути таблицы.
Пример: GRANT SELECT ON db.my_tables* TO john. Этот запрос позволяет john выполнять запрос SELECT для всех таблиц базы данных db с префиксом my_tables*.
Другие примеры:
GRANT SELECT ON db.my_tables* TO john
SELECT * FROM db.my_tables -- выдан
SELECT * FROM db.my_tables_0 -- выдан
SELECT * FROM db.my_tables_1 -- выдан
SELECT * FROM db.other_table -- не_выдан
SELECT * FROM db2.my_tables -- не_выданGRANT SELECT ON db*.* TO john
SELECT * FROM db.my_tables -- выдан
SELECT * FROM db.my_tables_0 -- выдан
SELECT * FROM db.my_tables_1 -- выдан
SELECT * FROM db.other_table -- выдан
SELECT * FROM db2.my_tables -- выданВсе вновь создаваемые таблицы в путях, для которых выданы привилегии, будут автоматически наследовать все привилегии от родительских путей.
Например, если вы выполните запрос GRANT SELECT ON db.* TO john, а затем создадите новую таблицу db.new_table, пользователь john сможет выполнить запрос SELECT * FROM db.new_table.
Звёздочку можно указывать только для префиксов:
GRANT SELECT ON db.* TO john -- верно
GRANT SELECT ON db*.* TO john -- верно
GRANT SELECT ON *.my_table TO john -- неверно
GRANT SELECT ON foo*bar TO john -- неверно
GRANT SELECT ON *suffix TO john -- неверно
GRANT SELECT(foo) ON db.table* TO john -- неверноПривилегии
Привилегия — это разрешение, предоставляемое пользователю для выполнения определённых видов запросов.
Привилегии имеют иерархическую структуру, и набор разрешённых запросов зависит от области действия привилегии.
Ниже показана иерархия привилегий в ClickHouse:
ALLУПРАВЛЕНИЕ ДОСТУПОМALLOW SQL SECURITY NONEALTER QUOTAALTER ROLEALTER ROW POLICYALTER SETTINGS PROFILEALTER USERCREATE QUOTACREATE ROLECREATE ROW POLICYCREATE SETTINGS PROFILECREATE USERDROP QUOTADROP ROLEDROP ROW POLICYDROP SETTINGS PROFILEDROP USERROLE ADMINSHOW ACCESSSHOW QUOTASSHOW ROLESSHOW ROW POLICIESSHOW SETTINGS PROFILESSHOW USERS
ALTERALTER DATABASEALTER DATABASE SETTINGS
ALTER TABLEALTER COLUMNALTER ADD COLUMNALTER CLEAR COLUMNALTER COMMENT COLUMNALTER DROP COLUMNALTER MATERIALIZE COLUMNALTER MODIFY COLUMNALTER RENAME COLUMN
ALTER CONSTRAINTALTER ADD CONSTRAINTALTER DROP CONSTRAINTALTER MODIFY CONSTRAINT
ALTER DELETEALTER FETCH PARTITIONALTER FREEZE PARTITIONALTER INDEXALTER ADD INDEXALTER CLEAR INDEXALTER DROP INDEXALTER MATERIALIZE INDEXALTER ORDER BYALTER SAMPLE BY
ALTER MATERIALIZE TTLALTER MODIFY COMMENTALTER MOVE PARTITIONALTER PROJECTIONALTER SETTINGSALTER STATISTICSALTER ADD STATISTICSALTER DROP STATISTICSALTER MATERIALIZE STATISTICSALTER MODIFY STATISTICS
ALTER TTLALTER UPDATEALTER TABLE EXECUTE
ALTER VIEWALTER VIEW MODIFY QUERYALTER VIEW REFRESHALTER VIEW MODIFY SQL SECURITY
BACKUPCLUSTERCREATECREATE ARBITRARY TEMPORARY TABLECREATE TEMPORARY TABLE
CREATE DATABASECREATE DICTIONARYCREATE FUNCTIONCREATE RESOURCECREATE TABLECREATE VIEWCREATE WORKLOAD
dictGetdisplaySecretsInShowAndSelectDROPDROP DATABASEDROP DICTIONARYDROP FUNCTIONDROP RESOURCEDROP TABLEDROP VIEWDROP WORKLOAD
INSERTINTROSPECTIONaddressToLineaddressToLineWithInlinesaddressToSymboldemangle
KILL QUERYKILL TRANSACTIONMOVE PARTITION BETWEEN SHARDSNAMED COLLECTION ADMINALTER NAMED COLLECTIONCREATE NAMED COLLECTIONDROP NAMED COLLECTIONNAMED COLLECTIONSHOW NAMED COLLECTIONSSHOW NAMED COLLECTIONS SECRETS
OPTIMIZESELECTSET DEFINERSHOWSHOW COLUMNSSHOW DATABASESSHOW DICTIONARIESSHOW TABLES
SHOW FILESYSTEM CACHESSOURCESAZUREBIGQUERYFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
SYSTEMSYSTEM BACKGROUNDSYSTEM STREAMING ENGINESSYSTEM VIEWS
SYSTEM CLEANUPSYSTEM DROP CACHESYSTEM DROP COMPILED EXPRESSION CACHESYSTEM DROP CONNECTIONS CACHESYSTEM DROP DISTRIBUTED CACHESYSTEM DROP DNS CACHESYSTEM DROP FILESYSTEM CACHESYSTEM DROP FORMAT SCHEMA CACHESYSTEM DROP MARK CACHESYSTEM DROP MMAP CACHESYSTEM DROP PAGE CACHESYSTEM DROP PRIMARY INDEX CACHESYSTEM DROP QUERY CACHESYSTEM DROP S3 CLIENT CACHESYSTEM DROP SCHEMA CACHESYSTEM DROP UNCOMPRESSED CACHE
SYSTEM DROP REPLICASYSTEM FAILPOINTSYSTEM FETCHESSYSTEM FLUSHSYSTEM FLUSH ASYNC INSERT QUEUESYSTEM FLUSH LOGS
SYSTEM JEMALLOCSYSTEM LISTENSYSTEM LOAD PRIMARY KEYSYSTEM MERGESSYSTEM MOVESSYSTEM PULLING REPLICATION LOGSYSTEM REDUCE BLOCKING PARTSSYSTEM REPLICATION QUEUESSYSTEM REPLICA READINESSSYSTEM RESET DDL WORKERSYSTEM RESTART DISKSYSTEM RESTART REPLICASYSTEM RESTORE REPLICASYSTEM RELOADSYSTEM RELOAD ASYNCHRONOUS METRICSSYSTEM RELOAD CONFIGSYSTEM RELOAD DICTIONARYSYSTEM RELOAD EMBEDDED DICTIONARIESSYSTEM RELOAD FUNCTIONSYSTEM RELOAD MODELSYSTEM RELOAD USERS
SYSTEM SENDSSYSTEM DISTRIBUTED SENDSSYSTEM REPLICATED SENDS
SYSTEM SHUTDOWNSYSTEM SYNC DATABASE REPLICASYSTEM SYNC FILE CACHESYSTEM SYNC FILESYSTEM CACHESYSTEM SYNC REPLICASYSTEM SYNC TRANSACTION LOGSYSTEM THREAD FUZZERSYSTEM TTL MERGESSYSTEM UNFREEZESYSTEM UNLOAD PRIMARY KEYSYSTEM VIRTUAL PARTS UPDATESYSTEM WAIT LOADING PARTS
TABLE ENGINETRUNCATEUNDROP TABLE
NONE
Примеры того, как трактуется эта иерархия:
- Привилегия
ALTERвключает все остальные привилегииALTER*. ALTER CONSTRAINTвключает привилегииALTER ADD CONSTRAINT,ALTER DROP CONSTRAINTиALTER MODIFY CONSTRAINT.
Привилегии применяются на разных уровнях. Понимание уровня подсказывает, какой синтаксис доступен для привилегии.
Уровни (от низшего к высшему):
COLUMN— привилегию можно выдать для столбца, таблицы, базы данных или глобально.TABLE— привилегию можно выдать для таблицы, базы данных или глобально.VIEW— привилегию можно выдать для представления, базы данных или глобально.DICTIONARY— привилегию можно выдать для словаря, базы данных или глобально.DATABASE— привилегию можно выдать для базы данных или глобально.GLOBAL— привилегию можно выдать только глобально.GROUP— группирует привилегии разных уровней. Когда выдается привилегия уровняGROUP, выдаются только те привилегии из группы, которые соответствуют используемому синтаксису.
Примеры допустимого синтаксиса:
GRANT SELECT(x) ON db.table TO userGRANT SELECT ON db.* TO user
Примеры недопустимого синтаксиса:
GRANT CREATE USER(x) ON db.table TO userGRANT CREATE USER ON db.* TO user
Специальная привилегия ALL предоставляет все привилегии учетной записи пользователя или роли.
По умолчанию у учетной записи пользователя или роли нет привилегий.
Если у пользователя или роли нет привилегий, это отображается как привилегия NONE.
Некоторые запросы по своей реализации требуют набора привилегий. Например, чтобы выполнить запрос RENAME, нужны следующие привилегии: SELECT, CREATE TABLE, INSERT и DROP TABLE.
SELECT
Позволяет выполнять запросы SELECT.
Уровень привилегии: COLUMN.
Описание
Пользователь, которому выдана эта привилегия, может выполнять запросы SELECT к указанному списку столбцов в указанной таблице и базе данных. Если пользователь укажет столбцы, отличные от разрешённых, запрос не вернёт данных.
Рассмотрим следующую привилегию:
GRANT SELECT(x,y) ON db.table TO johnЭта привилегия позволяет john выполнять любой запрос SELECT, который использует данные из столбцов x и/или y в db.table, например SELECT x FROM db.table. john не может выполнить SELECT z FROM db.table. Запрос SELECT * FROM db.table также недоступен. При обработке этого запроса ClickHouse не возвращает никаких данных, даже x и y. Единственное исключение — если таблица содержит только столбцы x и y, в этом случае ClickHouse возвращает все данные.
INSERT
Позволяет выполнять запросы INSERT.
Уровень привилегии: COLUMN.
Описание
Пользователь, которому выдана эта привилегия, может выполнять запросы INSERT для указанного списка столбцов в указанной таблице и базе данных. Если пользователь указывает столбцы, отличные от разрешённых, запрос не вставляет данные.
Пример
GRANT INSERT(x,y) ON db.table TO johnПредоставленная привилегия позволяет john вставлять данные в столбцы x и/или y таблицы db.table.
ALTER
Разрешает выполнять запросы ALTER в соответствии со следующей иерархией привилегий:
ALTER. Уровень:COLUMN.ALTER TABLE. Уровень:GROUPALTER UPDATE. Уровень:COLUMN. Псевдонимы:UPDATEALTER DELETE. Уровень:COLUMN. Псевдонимы:DELETEALTER COLUMN. Уровень:GROUPALTER ADD COLUMN. Уровень:COLUMN. Псевдонимы:ADD COLUMNALTER DROP COLUMN. Уровень:COLUMN. Псевдонимы:DROP COLUMNALTER MODIFY COLUMN. Уровень:COLUMN. Псевдонимы:MODIFY COLUMNALTER COMMENT COLUMN. Уровень:COLUMN. Псевдонимы:COMMENT COLUMNALTER CLEAR COLUMN. Уровень:COLUMN. Псевдонимы:CLEAR COLUMNALTER RENAME COLUMN. Уровень:COLUMN. Псевдонимы:RENAME COLUMNALTER INDEX. Уровень:GROUP. Псевдонимы:INDEXALTER ORDER BY. Уровень:TABLE. Псевдонимы:ALTER MODIFY ORDER BY,MODIFY ORDER BYALTER SAMPLE BY. Уровень:TABLE. Псевдонимы:ALTER MODIFY SAMPLE BY,MODIFY SAMPLE BYALTER ADD INDEX. Уровень:TABLE. Псевдонимы:ADD INDEXALTER DROP INDEX. Уровень:TABLE. Псевдонимы:DROP INDEXALTER MATERIALIZE INDEX. Уровень:TABLE. Псевдонимы:MATERIALIZE INDEXALTER CLEAR INDEX. Уровень:TABLE. Псевдонимы:CLEAR INDEXALTER CONSTRAINT. Уровень:GROUP. Псевдонимы:CONSTRAINTALTER ADD CONSTRAINT. Уровень:TABLE. Псевдонимы:ADD CONSTRAINTALTER DROP CONSTRAINT. Уровень:TABLE. Псевдонимы:DROP CONSTRAINTALTER MODIFY CONSTRAINT. Уровень:TABLE. Псевдонимы:MODIFY CONSTRAINTALTER TTL. Уровень:TABLE. Псевдонимы:ALTER MODIFY TTL,MODIFY TTLALTER MATERIALIZE TTL. Уровень:TABLE. Псевдонимы:MATERIALIZE TTLALTER SETTINGS. Уровень:TABLE. Псевдонимы:ALTER SETTING,ALTER MODIFY SETTING,MODIFY SETTINGALTER MOVE PARTITION. Уровень:TABLE. Псевдонимы:ALTER MOVE PART,MOVE PARTITION,MOVE PARTALTER FETCH PARTITION. Уровень:TABLE. Псевдонимы:ALTER FETCH PART,FETCH PARTITION,FETCH PARTALTER FREEZE PARTITION. Уровень:TABLE. Псевдонимы:FREEZE PARTITIONALTER EXECUTE. Уровень:TABLE. Псевдонимы:ALTER TABLE EXECUTEALTER VIEW. Уровень:GROUPALTER VIEW REFRESH. Уровень:VIEW. Псевдонимы:REFRESH VIEWALTER VIEW MODIFY QUERY. Уровень:VIEW. Псевдонимы:ALTER TABLE MODIFY QUERYALTER VIEW MODIFY SQL SECURITY. Уровень:VIEW. Псевдонимы:ALTER TABLE MODIFY SQL SECURITY
Примеры того, как работает эта иерархия:
- Привилегия
ALTERвключает все остальные привилегииALTER*. ALTER CONSTRAINTвключает привилегииALTER ADD CONSTRAINT,ALTER DROP CONSTRAINTиALTER MODIFY CONSTRAINT.
Примечания
- Привилегия
MODIFY SETTINGпозволяет изменять настройки движка таблицы. Она не влияет на настройки или параметры конфигурации сервера. - Для операции
ATTACHтребуется привилегия CREATE. - Для операции
DETACHтребуется привилегия DROP. - Чтобы остановить мутацию запросом KILL MUTATION, необходимо иметь привилегию, позволяющую запускать эту мутацию. Например, если вы хотите остановить запрос
ALTER UPDATE, вам нужна привилегияALTER UPDATE,ALTER TABLEилиALTER.
BACKUP
Разрешает выполнение [BACKUP] в запросах. Подробнее о резервном копировании см. в разделе "Резервное копирование и восстановление".
CREATE
Разрешает выполнять DDL-запросы CREATE и ATTACH в соответствии со следующей иерархией привилегий:
CREATE. Уровень:GROUPCREATE DATABASE. Уровень:DATABASECREATE TABLE. Уровень:TABLECREATE ARBITRARY TEMPORARY TABLE. Уровень:GLOBALCREATE TEMPORARY TABLE. Уровень:GLOBAL
CREATE VIEW. Уровень:VIEWCREATE DICTIONARY. Уровень:DICTIONARY
Примечания
- Чтобы удалить созданную таблицу, пользователю нужна привилегия DROP.
CLUSTER
Позволяет выполнять запросы с предложением ON CLUSTER.
GRANT CLUSTER ON *.* TO <username>По умолчанию для запросов с ON CLUSTER требуется, чтобы пользователю был выдан grant CLUSTER.
Если попытаться использовать ON CLUSTER в запросе без предварительной выдачи привилегии CLUSTER, вы получите следующую ошибку:
Not enough privileges. To execute this query, it's necessary to have the grant CLUSTER ON *.*.Поведение по умолчанию можно изменить, задав для настройки on_cluster_queries_require_cluster_grant, расположенной в разделе access_control_improvements файла config.xml (см. ниже), значение false.
<access_control_improvements>
<on_cluster_queries_require_cluster_grant>true</on_cluster_queries_require_cluster_grant>
</access_control_improvements>DROP
Позволяет выполнять запросы DROP и DETACH в соответствии со следующей иерархией привилегий:
DROP. Уровень:GROUPDROP DATABASE. Уровень:DATABASEDROP TABLE. Уровень:TABLEDROP VIEW. Уровень:VIEWDROP DICTIONARY. Уровень:DICTIONARY
TRUNCATE
Позволяет выполнять оператор TRUNCATE.
Уровень привилегии: TABLE.
OPTIMIZE
Позволяет выполнять запросы OPTIMIZE TABLE.
Уровень привилегии: TABLE.
SHOW
Позволяет выполнять запросы SHOW, DESCRIBE, USE и EXISTS в соответствии со следующей иерархией привилегий:
SHOW. Уровень:GROUPSHOW DATABASES. Уровень:DATABASE. Позволяет выполнять запросыSHOW DATABASES,SHOW CREATE DATABASE,USE <database>.SHOW TABLES. Уровень:TABLE. Позволяет выполнять запросыSHOW TABLES,EXISTS <table>,CHECK <table>.SHOW COLUMNS. Уровень:COLUMN. Позволяет выполнять запросыSHOW CREATE TABLE,DESCRIBE.SHOW DICTIONARIES. Уровень:DICTIONARY. Позволяет выполнять запросыSHOW DICTIONARIES,SHOW CREATE DICTIONARY,EXISTS <dictionary>.
Примечания
Пользователь имеет привилегию SHOW, если у него есть любая другая привилегия, относящаяся к указанной таблице, словарю или базе данных.
KILL QUERY
Позволяет выполнять запросы KILL согласно следующей иерархии привилегий:
Уровень привилегии: GLOBAL.
Примечания
Привилегия KILL QUERY позволяет одному пользователю завершать запросы других пользователей.
УПРАВЛЕНИЕ ДОСТУПОМ
Позволяет пользователю выполнять запросы для управления пользователями, ролями и политиками строк.
ACCESS MANAGEMENT. Уровень:GROUPCREATE USER. Уровень:GLOBALALTER USER. Уровень:GLOBALDROP USER. Уровень:GLOBALCREATE ROLE. Уровень:GLOBALALTER ROLE. Уровень:GLOBALDROP ROLE. Уровень:GLOBALROLE ADMIN. Уровень:GLOBALCREATE ROW POLICY. Уровень:GLOBAL. Псевдонимы:CREATE POLICYALTER ROW POLICY. Уровень:GLOBAL. Псевдонимы:ALTER POLICYDROP ROW POLICY. Уровень:GLOBAL. Псевдонимы:DROP POLICYCREATE QUOTA. Уровень:GLOBALALTER QUOTA. Уровень:GLOBALDROP QUOTA. Уровень:GLOBALCREATE SETTINGS PROFILE. Уровень:GLOBAL. Псевдонимы:CREATE PROFILEALTER SETTINGS PROFILE. Уровень:GLOBAL. Псевдонимы:ALTER PROFILEDROP SETTINGS PROFILE. Уровень:GLOBAL. Псевдонимы:DROP PROFILESHOW ACCESS. Уровень:GROUPSHOW_USERS. Уровень:GLOBAL. Псевдонимы:SHOW CREATE USERSHOW_ROLES. Уровень:GLOBAL. Псевдонимы:SHOW CREATE ROLESHOW_ROW_POLICIES. Уровень:GLOBAL. Псевдонимы:SHOW POLICIES,SHOW CREATE ROW POLICY,SHOW CREATE POLICYSHOW_QUOTAS. Уровень:GLOBAL. Псевдонимы:SHOW CREATE QUOTASHOW_SETTINGS_PROFILES. Уровень:GLOBAL. Псевдонимы:SHOW PROFILES,SHOW CREATE SETTINGS PROFILE,SHOW CREATE PROFILE
ALLOW SQL SECURITY NONE. Уровень:GLOBAL. Псевдонимы:CREATE SQL SECURITY NONE,SQL SECURITY NONE,SECURITY NONE
Привилегия ROLE ADMIN позволяет пользователю назначать и отзывать любые роли, включая те, которые не назначены этому пользователю с опцией admin.
SYSTEM
Позволяет пользователю выполнять запросы SYSTEM в соответствии со следующей иерархией привилегий.
SYSTEM. Уровень:GROUPSYSTEM SHUTDOWN. Уровень:GLOBAL. Псевдонимы:SYSTEM KILL,SHUTDOWNSYSTEM DROP CACHE. Псевдонимы:DROP CACHESYSTEM DROP DNS CACHE. Уровень:GLOBAL. Псевдонимы:SYSTEM CLEAR DNS CACHE,SYSTEM DROP DNS,DROP DNS CACHE,DROP DNSSYSTEM DROP MARK CACHE. Уровень:GLOBAL. Псевдонимы:SYSTEM CLEAR MARK CACHE,SYSTEM DROP MARK,DROP MARK CACHE,DROP MARKSSYSTEM DROP UNCOMPRESSED CACHE. Уровень:GLOBAL. Псевдонимы:SYSTEM CLEAR UNCOMPRESSED CACHE,SYSTEM DROP UNCOMPRESSED,DROP UNCOMPRESSED CACHE,DROP UNCOMPRESSED
SYSTEM RELOAD. Уровень:GROUPSYSTEM RELOAD CONFIG. Уровень:GLOBAL. Псевдонимы:RELOAD CONFIGSYSTEM RELOAD DICTIONARY. Уровень:GLOBAL. Псевдонимы:SYSTEM RELOAD DICTIONARIES,RELOAD DICTIONARY,RELOAD DICTIONARIES,SYSTEM UNLOAD DICTIONARY,SYSTEM UNLOAD DICTIONARIES,UNLOAD DICTIONARY,UNLOAD DICTIONARIESSYSTEM RELOAD EMBEDDED DICTIONARIES. Уровень:GLOBAL. Псевдонимы:RELOAD EMBEDDED DICTIONARIES
SYSTEM MERGES. Уровень:TABLE. Псевдонимы:SYSTEM STOP MERGES,SYSTEM START MERGES,STOP MERGES,START MERGESSYSTEM TTL MERGES. Уровень:TABLE. Псевдонимы:SYSTEM STOP TTL MERGES,SYSTEM START TTL MERGES,STOP TTL MERGES,START TTL MERGESSYSTEM FETCHES. Уровень:TABLE. Псевдонимы:SYSTEM STOP FETCHES,SYSTEM START FETCHES,STOP FETCHES,START FETCHESSYSTEM MOVES. Уровень:TABLE. Псевдонимы:SYSTEM STOP MOVES,SYSTEM START MOVES,STOP MOVES,START MOVESSYSTEM SENDS. Уровень:GROUP. Псевдонимы:SYSTEM STOP SENDS,SYSTEM START SENDS,STOP SENDS,START SENDSSYSTEM DISTRIBUTED SENDS. Уровень:TABLE. Псевдонимы:SYSTEM STOP DISTRIBUTED SENDS,SYSTEM START DISTRIBUTED SENDS,STOP DISTRIBUTED SENDS,START DISTRIBUTED SENDSSYSTEM REPLICATED SENDS. Уровень:TABLE. Псевдонимы:SYSTEM STOP REPLICATED SENDS,SYSTEM START REPLICATED SENDS,STOP REPLICATED SENDS,START REPLICATED SENDS
SYSTEM REPLICATION QUEUES. Уровень:TABLE. Псевдонимы:SYSTEM STOP REPLICATION QUEUES,SYSTEM START REPLICATION QUEUES,STOP REPLICATION QUEUES,START REPLICATION QUEUESSYSTEM SYNC REPLICA. Уровень:TABLE. Псевдонимы:SYNC REPLICASYSTEM RESTART REPLICA. Уровень:TABLE. Псевдонимы:RESTART REPLICASYSTEM BACKGROUND. Уровень:GROUPSYSTEM STREAMING ENGINES. Уровень:TABLESYSTEM VIEWS. Уровень:VIEW. Псевдонимы:SYSTEM REFRESH VIEW,SYSTEM START VIEWS,SYSTEM STOP VIEWS,SYSTEM START VIEW,SYSTEM STOP VIEW,SYSTEM PAUSE VIEWS,SYSTEM PAUSE VIEW,SYSTEM CANCEL VIEW,REFRESH VIEW,START VIEWS,STOP VIEWS,START VIEW,STOP VIEW,PAUSE VIEWS,PAUSE VIEW,CANCEL VIEW
SYSTEM FLUSH. Уровень:GROUPSYSTEM FLUSH DISTRIBUTED. Уровень:TABLE. Псевдонимы:FLUSH DISTRIBUTEDSYSTEM FLUSH LOGS. Уровень:GLOBAL. Псевдонимы:FLUSH LOGS
Команды SYSTEM UNLOAD DICTIONARY и SYSTEM UNLOAD DICTIONARIES используют ту же привилегию SYSTEM RELOAD DICTIONARY, поэтому пользователь с привилегией SYSTEM RELOAD DICTIONARY также может выгружать словари.
Привилегия SYSTEM RELOAD EMBEDDED DICTIONARIES неявно предоставляется привилегией SYSTEM RELOAD DICTIONARY ON *.*.
INTROSPECTION
Позволяет использовать функции интроспекции.
INTROSPECTION. Уровень:GROUP. Псевдонимы:INTROSPECTION FUNCTIONSaddressToLine. Уровень:GLOBALaddressToLineWithInlines. Уровень:GLOBALaddressToSymbol. Уровень:GLOBALdemangle. Уровень:GLOBAL
SOURCES
Разрешает использовать внешние источники данных. Применяется к движкам таблиц и табличным функциям.
READ. Уровень:GLOBAL_WITH_PARAMETERWRITE. Уровень:GLOBAL_WITH_PARAMETER
Возможные параметры:
AZUREBIGQUERYFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
Примеры:
- Чтобы создать таблицу с движком таблицы MySQL, требуются привилегии
CREATE TABLE (ON db.table_name)иMYSQL. - Чтобы использовать табличную функцию mysql, требуются привилегии
CREATE TEMPORARY TABLEиMYSQL.
Привилегии для фильтрации источников
Вы можете предоставлять доступ к URI определённых источников с помощью фильтров на основе регулярных выражений. Это позволяет точно контролировать, к каким внешним источникам данных пользователи могут получать доступ.
Синтаксис:
GRANT READ ON S3('regexp_pattern') TO userЭтот grant позволяет пользователю читать данные только из URI S3, соответствующих указанному шаблону регулярного выражения.
Примеры:
Предоставьте доступ к определённым путям в S3 бакете:
-- Allow user to read only from s3://foo/ paths
GRANT READ ON S3('s3://foo/.*') TO john
-- Allow user to read from specific file patterns
GRANT READ ON S3('s3://mybucket/data/2024/.*\.parquet') TO analyst
-- Multiple filters can be granted to the same user
GRANT READ ON S3('s3://foo/.*') TO john
GRANT READ ON S3('s3://bar/.*') TO johnПовторная выдача с GRANT OPTION:
Если исходный grant содержит WITH GRANT OPTION, его можно выдать повторно с помощью GRANT CURRENT GRANTS:
-- Original grant with GRANT OPTION
GRANT READ ON S3('s3://foo/.*') TO john WITH GRANT OPTION
-- John can now regrant this access to others
GRANT CURRENT GRANTS(READ ON S3) TO aliceВажные ограничения:
- Частичный отзыв не допускается: Нельзя отозвать только часть ранее выданного шаблона фильтра. При необходимости нужно отозвать весь grant и выдать его заново с новыми шаблонами.
- grant с подстановочными знаками не допускается: Нельзя использовать
GRANT READ ON *('regexp')или аналогичные шаблоны, состоящие только из подстановочных знаков. Необходимо указать конкретный источник.
dictGet
dictGet. Псевдонимы:dictHas,dictGetHierarchy,dictGetRoot,dictGetChildren,dictGetDescendants,dictIsIn
Позволяет пользователю вызывать функции dictGet, dictHas, dictGetHierarchy, dictGetRoot, dictGetChildren, dictGetDescendants, dictIsIn.
Уровень привилегии: DICTIONARY.
Примеры
GRANT dictGet ON mydb.mydictionary TO johnGRANT dictGet ON mydictionary TO john
displaySecretsInShowAndSelect
Позволяет пользователю просматривать секреты в запросах SHOW и SELECT, если включены и
display_secrets_in_show_and_select настройка сервера,
и
format_display_secrets_in_show_and_select настройка формата.
NAMED COLLECTION ADMIN
Разрешает выполнять определённую операцию с указанной именованной коллекцией. До версии 23.7 эта привилегия называлась NAMED COLLECTION CONTROL, а в версии 23.7 была добавлена NAMED COLLECTION ADMIN, при этом NAMED COLLECTION CONTROL сохранён как псевдоним.
NAMED COLLECTION ADMIN. Уровень:NAMED_COLLECTION. Псевдонимы:NAMED COLLECTION CONTROLCREATE NAMED COLLECTION. Уровень:NAMED_COLLECTIONDROP NAMED COLLECTION. Уровень:NAMED_COLLECTIONALTER NAMED COLLECTION. Уровень:NAMED_COLLECTIONSHOW NAMED COLLECTIONS. Уровень:NAMED_COLLECTION. Псевдонимы:SHOW NAMED COLLECTIONSSHOW NAMED COLLECTIONS SECRETS. Уровень:NAMED_COLLECTION. Псевдонимы:SHOW NAMED COLLECTIONS SECRETSNAMED COLLECTION. Уровень:NAMED_COLLECTION. Псевдонимы:NAMED COLLECTION USAGE, USE NAMED COLLECTION
В отличие от всех остальных привилегий (CREATE, DROP, ALTER, SHOW), привилегия NAMED COLLECTION была добавлена только в версии 23.7, тогда как все остальные были добавлены раньше — в 22.12.
Примеры
Предположим, что именованная коллекция называется abc. Выдадим пользователю john привилегию CREATE NAMED COLLECTION.
GRANT CREATE NAMED COLLECTION ON abc TO john
ДВИЖОК ТАБЛИЦЫ
Разрешает использовать указанный движок таблицы при создании таблицы. Относится к движкам таблицы.
Примеры
GRANT TABLE ENGINE ON * TO johnGRANT TABLE ENGINE ON TinyLog TO john
Для некоторых движков таблицы с внешними источниками могут требоваться разрешения READ/WRITE на соответствующий источник. См. Источники.
Например, для движка таблицы AzureBlobStorage может потребоваться следующая привилегия.
GRANT READ, WRITE ON AZURE TO john
ALL
Предоставляет все привилегии на регулируемую сущность пользователю или роли.
NONE
Не предоставляет никаких привилегий.
ADMIN OPTION
Привилегия ADMIN OPTION позволяет пользователю назначить свою роль другому пользователю.