- Concede privilégios a contas de usuário ou funções do ClickHouse.
- Atribui funções a contas de usuário ou a outros funções.
Para revogar privilégios, use a instrução REVOKE. Você também pode listar os privilégios concedidos com a instrução SHOW GRANTS.
Sintaxe de concessão de privilégios
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— Tipo de privilégio.role— Função de usuário do ClickHouse.user— Conta de usuário do ClickHouse.
A cláusula WITH GRANT OPTION concede a user ou role a permissão para executar a consulta GRANT. Os usuários podem conceder privilégios no mesmo escopo que já possuem ou em escopos menores.
A cláusula WITH REPLACE OPTION substitui os privilégios antigos por novos privilégios para o user ou role; se não for especificada, ela acrescenta privilégios.
Sintaxe para atribuir Função
GRANT [ON CLUSTER cluster_name] role [,...] TO {user | another_role | CURRENT_USER} [,...] [WITH ADMIN OPTION] [WITH REPLACE OPTION]role— função de usuário do ClickHouse.user— conta de usuário do ClickHouse.
A cláusula WITH ADMIN OPTION concede o privilégio ADMIN OPTION a user ou função.
A cláusula WITH REPLACE OPTION substitui as funções antigas pela nova função de user ou função; se não for especificada, acrescenta funções.
Sintaxe de 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— Tipo de privilégio.role— função de usuário do ClickHouse.user— Conta de usuário do ClickHouse.
A instrução CURRENT GRANTS permite conceder todos os privilégios especificados ao usuário ou função informado.
Se nenhum privilégio for especificado, o usuário ou função informado receberá todos os privilégios disponíveis para CURRENT_USER.
Uso
Para usar GRANT, sua conta deve ter o privilégio GRANT OPTION. Você pode conceder privilégios apenas dentro do escopo dos privilégios da sua conta.
Por exemplo, o administrador concedeu privilégios à conta john por meio da consulta:
GRANT SELECT(x,y) ON db.table TO john WITH GRANT OPTIONIsso significa que john tem permissão para executar:
SELECT x,y FROM db.table.SELECT x FROM db.table.SELECT y FROM db.table.
john não pode executar SELECT z FROM db.table. SELECT * FROM db.table também não está disponível. Ao processar essa consulta, o ClickHouse não retorna dado algum, nem mesmo x e y. A única exceção é se uma tabela contiver apenas as colunas x e y. Nesse caso, o ClickHouse retorna todos os dados.
Além disso, john tem o privilégio GRANT OPTION, portanto pode conceder a outros usuários privilégios com o mesmo escopo ou com escopo menor.
O acesso ao banco de dados system é sempre permitido (já que esse banco de dados é usado para processar consultas).
Você pode conceder vários privilégios a várias contas em uma única consulta. A consulta GRANT SELECT, INSERT ON *.* TO john, robin permite que as contas john e robin executem as consultas INSERT e SELECT em todas as tabelas de todos os bancos de dados no servidor.
Concessões com curingas
Ao especificar privilégios, você pode usar um asterisco (*) em vez do nome de uma tabela ou de um banco de dados. Por exemplo, a consulta GRANT SELECT ON db.* TO john permite que john execute a consulta SELECT em todas as tabelas do banco de dados db.
Além disso, você pode omitir o nome do banco de dados. Nesse caso, os privilégios são concedidos ao banco de dados atual.
Por exemplo, GRANT SELECT ON * TO john concede o privilégio em todas as tabelas do banco de dados atual, e GRANT SELECT ON mytable TO john concede o privilégio na tabela mytable no banco de dados atual.
Você também pode colocar asteriscos no final do nome de uma tabela ou de um banco de dados. Esse recurso permite conceder privilégios sobre um prefixo abstrato do caminho da tabela.
Exemplo: GRANT SELECT ON db.my_tables* TO john. Essa consulta permite que john execute a consulta SELECT em todas as tabelas do banco de dados db com o prefixo my_tables*.
Mais exemplos:
GRANT SELECT ON db.my_tables* TO john
SELECT * FROM db.my_tables -- concedido
SELECT * FROM db.my_tables_0 -- concedido
SELECT * FROM db.my_tables_1 -- concedido
SELECT * FROM db.other_table -- não_concedido
SELECT * FROM db2.my_tables -- não_concedidoGRANT SELECT ON db*.* TO john
SELECT * FROM db.my_tables -- concedido
SELECT * FROM db.my_tables_0 -- concedido
SELECT * FROM db.my_tables_1 -- concedido
SELECT * FROM db.other_table -- concedido
SELECT * FROM db2.my_tables -- concedidoTodas as tabelas recém-criadas dentro dos caminhos concedidos herdarão automaticamente todos os grants de seus objetos pai.
Por exemplo, se você executar a consulta GRANT SELECT ON db.* TO john e depois criar uma nova tabela db.new_table, o usuário john poderá executar a consulta SELECT * FROM db.new_table.
Você pode especificar o asterisco apenas para os prefixos:
GRANT SELECT ON db.* TO john -- correto
GRANT SELECT ON db*.* TO john -- correto
GRANT SELECT ON *.my_table TO john -- incorreto
GRANT SELECT ON foo*bar TO john -- incorreto
GRANT SELECT ON *suffix TO john -- incorreto
GRANT SELECT(foo) ON db.table* TO john -- incorretoPrivilégios
Um privilégio é uma permissão concedida a um usuário para executar tipos específicos de consultas.
Os privilégios têm uma estrutura hierárquica, e o conjunto de consultas permitidas depende do escopo do privilégio.
A hierarquia de privilégios no ClickHouse é mostrada abaixo:
ALLCONTROLE DE ACESSOALLOW 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
MECANISMO DE TABELATRUNCATEUNDROP TABLE
NONE
Exemplos de como essa hierarquia é tratada:
- O privilégio
ALTERinclui todos os outros privilégiosALTER*. ALTER CONSTRAINTinclui os privilégiosALTER ADD CONSTRAINT,ALTER DROP CONSTRAINTeALTER MODIFY CONSTRAINT.
Os privilégios são aplicados em diferentes níveis. Saber em que nível um privilégio se aplica indica qual sintaxe está disponível para ele.
Níveis (do mais baixo para o mais alto):
COLUMN— O privilégio pode ser concedido para coluna, tabela, banco de dados ou globalmente.TABLE— O privilégio pode ser concedido para tabela, banco de dados ou globalmente.VIEW— O privilégio pode ser concedido para view, banco de dados ou globalmente.DICTIONARY— O privilégio pode ser concedido para dicionário, banco de dados ou globalmente.DATABASE— O privilégio pode ser concedido para banco de dados ou globalmente.GLOBAL— O privilégio pode ser concedido apenas globalmente.GROUP— Agrupa privilégios de diferentes níveis. Quando um privilégio de nívelGROUPé concedido, somente os privilégios do grupo que correspondem à sintaxe usada são concedidos.
Exemplos de sintaxe permitida:
GRANT SELECT(x) ON db.table TO userGRANT SELECT ON db.* TO user
Exemplos de sintaxe não permitida:
GRANT CREATE USER(x) ON db.table TO userGRANT CREATE USER ON db.* TO user
O privilégio especial ALL concede todos os privilégios a uma conta de usuário ou a uma função.
Por padrão, uma conta de usuário ou uma função não tem privilégios.
Se um usuário ou uma função não tiver privilégios, isso será exibido como o privilégio NONE.
Algumas consultas, por sua implementação, exigem um conjunto de privilégios. Por exemplo, para executar a consulta RENAME, você precisa dos seguintes privilégios: SELECT, CREATE TABLE, INSERT e DROP TABLE.
SELECT
Permite executar consultas SELECT.
Nível de privilégio: COLUMN.
Descrição
O usuário com esse privilégio pode executar consultas SELECT em uma lista específica de colunas na tabela e no banco de dados especificados. Se o usuário incluir outras colunas além das especificadas, a consulta não retornará dados.
Considere o seguinte privilégio:
GRANT SELECT(x,y) ON db.table TO johnEsse privilégio permite que john execute qualquer consulta SELECT que envolva dados das colunas x e/ou y em db.table, por exemplo, SELECT x FROM db.table. john não pode executar SELECT z FROM db.table. SELECT * FROM db.table também não pode ser executada. Ao processar essa consulta, o ClickHouse não retorna dado algum, nem mesmo x e y. A única exceção é quando a tabela contém apenas as colunas x e y; nesse caso, o ClickHouse retorna todos os dados.
INSERT
Permite executar consultas INSERT.
Nível de privilégio: COLUMN.
Descrição
O usuário que recebe esse privilégio pode executar consultas INSERT em uma lista especificada de colunas na tabela e no banco de dados especificados. Se o usuário incluir colunas diferentes das especificadas, a consulta não inserirá nenhum dado.
Exemplo
GRANT INSERT(x,y) ON db.table TO johnO privilégio concedido permite que john insira dados nas colunas x e/ou y de db.table.
ALTER
Permite executar consultas ALTER de acordo com a seguinte hierarquia de privilégios:
ALTER. Nível:COLUMN.ALTER TABLE. Nível:GROUPALTER UPDATE. Nível:COLUMN. Aliases:UPDATEALTER DELETE. Nível:COLUMN. Aliases:DELETEALTER COLUMN. Nível:GROUPALTER ADD COLUMN. Nível:COLUMN. Aliases:ADD COLUMNALTER DROP COLUMN. Nível:COLUMN. Aliases:DROP COLUMNALTER MODIFY COLUMN. Nível:COLUMN. Aliases:MODIFY COLUMNALTER COMMENT COLUMN. Nível:COLUMN. Aliases:COMMENT COLUMNALTER CLEAR COLUMN. Nível:COLUMN. Aliases:CLEAR COLUMNALTER RENAME COLUMN. Nível:COLUMN. Aliases:RENAME COLUMNALTER INDEX. Nível:GROUP. Aliases:INDEXALTER ORDER BY. Nível:TABLE. Aliases:ALTER MODIFY ORDER BY,MODIFY ORDER BYALTER SAMPLE BY. Nível:TABLE. Aliases:ALTER MODIFY SAMPLE BY,MODIFY SAMPLE BYALTER ADD INDEX. Nível:TABLE. Aliases:ADD INDEXALTER DROP INDEX. Nível:TABLE. Aliases:DROP INDEXALTER MATERIALIZE INDEX. Nível:TABLE. Aliases:MATERIALIZE INDEXALTER CLEAR INDEX. Nível:TABLE. Aliases:CLEAR INDEXALTER CONSTRAINT. Nível:GROUP. Aliases:CONSTRAINTALTER ADD CONSTRAINT. Nível:TABLE. Aliases:ADD CONSTRAINTALTER DROP CONSTRAINT. Nível:TABLE. Aliases:DROP CONSTRAINTALTER MODIFY CONSTRAINT. Nível:TABLE. Aliases:MODIFY CONSTRAINTALTER TTL. Nível:TABLE. Aliases:ALTER MODIFY TTL,MODIFY TTLALTER MATERIALIZE TTL. Nível:TABLE. Aliases:MATERIALIZE TTLALTER SETTINGS. Nível:TABLE. Aliases:ALTER SETTING,ALTER MODIFY SETTING,MODIFY SETTINGALTER MOVE PARTITION. Nível:TABLE. Aliases:ALTER MOVE PART,MOVE PARTITION,MOVE PARTALTER FETCH PARTITION. Nível:TABLE. Aliases:ALTER FETCH PART,FETCH PARTITION,FETCH PARTALTER FREEZE PARTITION. Nível:TABLE. Aliases:FREEZE PARTITIONALTER EXECUTE. Nível:TABLE. Aliases:ALTER TABLE EXECUTEALTER VIEW. Nível:GROUPALTER VIEW REFRESH. Nível:VIEW. Aliases:REFRESH VIEWALTER VIEW MODIFY QUERY. Nível:VIEW. Aliases:ALTER TABLE MODIFY QUERYALTER VIEW MODIFY SQL SECURITY. Nível:VIEW. Aliases:ALTER TABLE MODIFY SQL SECURITY
Exemplos de como essa hierarquia funciona:
- O privilégio
ALTERinclui todos os outros privilégiosALTER*. ALTER CONSTRAINTinclui os privilégiosALTER ADD CONSTRAINT,ALTER DROP CONSTRAINTeALTER MODIFY CONSTRAINT.
Observações
- O privilégio
MODIFY SETTINGpermite modificar as configurações do motor de tabela. Ele não afeta configurações nem parâmetros de configuração do servidor. - A operação
ATTACHrequer o privilégio CREATE. - A operação
DETACHrequer o privilégio DROP. - Para interromper uma mutação com a consulta KILL MUTATION, você precisa ter um privilégio para iniciar essa mutação. Por exemplo, se quiser interromper a consulta
ALTER UPDATE, precisará do privilégioALTER UPDATE,ALTER TABLEouALTER.
BACKUP
Permite executar [BACKUP] em consultas. Para mais informações sobre backups, consulte "Backup e restauração".
CREATE
Permite executar instruções DDL CREATE e ATTACH de acordo com a seguinte hierarquia de privilégios:
CREATE. Nível:GROUPCREATE DATABASE. Nível:DATABASECREATE TABLE. Nível:TABLECREATE ARBITRARY TEMPORARY TABLE. Nível:GLOBALCREATE TEMPORARY TABLE. Nível:GLOBAL
CREATE VIEW. Nível:VIEWCREATE DICTIONARY. Nível:DICTIONARY
Observações
- Para remover a tabela criada, o usuário precisa de DROP.
CLUSTER
Permite executar consultas com ON CLUSTER.
GRANT CLUSTER ON *.* TO <username>Por padrão, consultas com ON CLUSTER exigem que o usuário tenha o privilégio CLUSTER.
Você receberá o seguinte erro se tentar usar ON CLUSTER em uma consulta sem antes conceder o privilégio CLUSTER:
Not enough privileges. To execute this query, it's necessary to have the grant CLUSTER ON *.*.O comportamento padrão pode ser alterado definindo a opção on_cluster_queries_require_cluster_grant,
localizada na seção access_control_improvements de config.xml (veja abaixo), como false.
<access_control_improvements>
<on_cluster_queries_require_cluster_grant>true</on_cluster_queries_require_cluster_grant>
</access_control_improvements>DROP
Permite executar as consultas DROP e DETACH de acordo com a seguinte hierarquia de privilégios:
DROP. Nível:GROUPDROP DATABASE. Nível:DATABASEDROP TABLE. Nível:TABLEDROP VIEW. Nível:VIEWDROP DICTIONARY. Nível:DICTIONARY
TRUNCATE
Permite executar consultas TRUNCATE.
Nível de privilégio: TABLE.
OPTIMIZE
Permite executar instruções OPTIMIZE TABLE.
Nível de privilégio: TABLE.
SHOW
Permite executar consultas SHOW, DESCRIBE, USE e EXISTS de acordo com a seguinte hierarquia de privilégios:
SHOW. Nível:GROUPSHOW DATABASES. Nível:DATABASE. Permite executar as consultasSHOW DATABASES,SHOW CREATE DATABASE,USE <database>.SHOW TABLES. Nível:TABLE. Permite executar as consultasSHOW TABLES,EXISTS <table>,CHECK <table>.SHOW COLUMNS. Nível:COLUMN. Permite executar as consultasSHOW CREATE TABLE,DESCRIBE.SHOW DICTIONARIES. Nível:DICTIONARY. Permite executar as consultasSHOW DICTIONARIES,SHOW CREATE DICTIONARY,EXISTS <dictionary>.
Observações
Um usuário tem o privilégio SHOW se tiver qualquer outro privilégio referente à tabela, ao dicionário ou ao banco de dados especificado.
KILL QUERY
Permite executar consultas KILL de acordo com a seguinte hierarquia de privilégios:
Nível de privilégio: GLOBAL.
Observações
O privilégio KILL QUERY permite que um usuário encerre as consultas de outros usuários.
GERENCIAMENTO DE ACESSO
Permite que um usuário execute consultas que gerenciem usuários, funções e políticas de linha.
ACCESS MANAGEMENT. Nível:GROUPCREATE USER. Nível:GLOBALALTER USER. Nível:GLOBALDROP USER. Nível:GLOBALCREATE ROLE. Nível:GLOBALALTER ROLE. Nível:GLOBALDROP ROLE. Nível:GLOBALROLE ADMIN. Nível:GLOBALCREATE ROW POLICY. Nível:GLOBAL. Aliases:CREATE POLICYALTER ROW POLICY. Nível:GLOBAL. Aliases:ALTER POLICYDROP ROW POLICY. Nível:GLOBAL. Aliases:DROP POLICYCREATE QUOTA. Nível:GLOBALALTER QUOTA. Nível:GLOBALDROP QUOTA. Nível:GLOBALCREATE SETTINGS PROFILE. Nível:GLOBAL. Aliases:CREATE PROFILEALTER SETTINGS PROFILE. Nível:GLOBAL. Aliases:ALTER PROFILEDROP SETTINGS PROFILE. Nível:GLOBAL. Aliases:DROP PROFILESHOW ACCESS. Nível:GROUPSHOW_USERS. Nível:GLOBAL. Aliases:SHOW CREATE USERSHOW_ROLES. Nível:GLOBAL. Aliases:SHOW CREATE ROLESHOW_ROW_POLICIES. Nível:GLOBAL. Aliases:SHOW POLICIES,SHOW CREATE ROW POLICY,SHOW CREATE POLICYSHOW_QUOTAS. Nível:GLOBAL. Aliases:SHOW CREATE QUOTASHOW_SETTINGS_PROFILES. Nível:GLOBAL. Aliases:SHOW PROFILES,SHOW CREATE SETTINGS PROFILE,SHOW CREATE PROFILE
ALLOW SQL SECURITY NONE. Nível:GLOBAL. Aliases:CREATE SQL SECURITY NONE,SQL SECURITY NONE,SECURITY NONE
O privilégio ROLE ADMIN permite que um usuário conceda e revogue quaisquer funções, incluindo aqueles que não foram atribuídos ao usuário com a opção admin.
SYSTEM
Permite que um usuário execute consultas SYSTEM de acordo com a seguinte hierarquia de privilégios.
SYSTEM. Nível:GROUPSYSTEM SHUTDOWN. Nível:GLOBAL. Aliases:SYSTEM KILL,SHUTDOWNSYSTEM DROP CACHE. Aliases:DROP CACHESYSTEM DROP DNS CACHE. Nível:GLOBAL. Aliases:SYSTEM CLEAR DNS CACHE,SYSTEM DROP DNS,DROP DNS CACHE,DROP DNSSYSTEM DROP MARK CACHE. Nível:GLOBAL. Aliases:SYSTEM CLEAR MARK CACHE,SYSTEM DROP MARK,DROP MARK CACHE,DROP MARKSSYSTEM DROP UNCOMPRESSED CACHE. Nível:GLOBAL. Aliases:SYSTEM CLEAR UNCOMPRESSED CACHE,SYSTEM DROP UNCOMPRESSED,DROP UNCOMPRESSED CACHE,DROP UNCOMPRESSED
SYSTEM RELOAD. Nível:GROUPSYSTEM RELOAD CONFIG. Nível:GLOBAL. Aliases:RELOAD CONFIGSYSTEM RELOAD DICTIONARY. Nível:GLOBAL. Aliases:SYSTEM RELOAD DICTIONARIES,RELOAD DICTIONARY,RELOAD DICTIONARIES,SYSTEM UNLOAD DICTIONARY,SYSTEM UNLOAD DICTIONARIES,UNLOAD DICTIONARY,UNLOAD DICTIONARIESSYSTEM RELOAD EMBEDDED DICTIONARIES. Nível:GLOBAL. Aliases:RELOAD EMBEDDED DICTIONARIES
SYSTEM MERGES. Nível:TABLE. Aliases:SYSTEM STOP MERGES,SYSTEM START MERGES,STOP MERGES,START MERGESSYSTEM TTL MERGES. Nível:TABLE. Aliases:SYSTEM STOP TTL MERGES,SYSTEM START TTL MERGES,STOP TTL MERGES,START TTL MERGESSYSTEM FETCHES. Nível:TABLE. Aliases:SYSTEM STOP FETCHES,SYSTEM START FETCHES,STOP FETCHES,START FETCHESSYSTEM MOVES. Nível:TABLE. Aliases:SYSTEM STOP MOVES,SYSTEM START MOVES,STOP MOVES,START MOVESSYSTEM SENDS. Nível:GROUP. Aliases:SYSTEM STOP SENDS,SYSTEM START SENDS,STOP SENDS,START SENDSSYSTEM DISTRIBUTED SENDS. Nível:TABLE. Aliases:SYSTEM STOP DISTRIBUTED SENDS,SYSTEM START DISTRIBUTED SENDS,STOP DISTRIBUTED SENDS,START DISTRIBUTED SENDSSYSTEM REPLICATED SENDS. Nível:TABLE. Aliases:SYSTEM STOP REPLICATED SENDS,SYSTEM START REPLICATED SENDS,STOP REPLICATED SENDS,START REPLICATED SENDS
SYSTEM REPLICATION QUEUES. Nível:TABLE. Aliases:SYSTEM STOP REPLICATION QUEUES,SYSTEM START REPLICATION QUEUES,STOP REPLICATION QUEUES,START REPLICATION QUEUESSYSTEM SYNC REPLICA. Nível:TABLE. Aliases:SYNC REPLICASYSTEM RESTART REPLICA. Nível:TABLE. Aliases:RESTART REPLICASYSTEM BACKGROUND. Nível:GROUPSYSTEM STREAMING ENGINES. Nível:TABLESYSTEM VIEWS. Nível:VIEW. Aliases: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. Nível:GROUPSYSTEM FLUSH DISTRIBUTED. Nível:TABLE. Aliases:FLUSH DISTRIBUTEDSYSTEM FLUSH LOGS. Nível:GLOBAL. Aliases:FLUSH LOGS
Os comandos SYSTEM UNLOAD DICTIONARY e SYSTEM UNLOAD DICTIONARIES reutilizam o privilégio SYSTEM RELOAD DICTIONARY, portanto um usuário com SYSTEM RELOAD DICTIONARY também pode descarregar dicionários.
O privilégio SYSTEM RELOAD EMBEDDED DICTIONARIES é concedido implicitamente pelo privilégio SYSTEM RELOAD DICTIONARY ON *.*.
INTROSPECTION
Permite o uso de funções de introspecção.
INTROSPECTION. Nível:GROUP. Aliases:INTROSPECTION FUNCTIONSaddressToLine. Nível:GLOBALaddressToLineWithInlines. Nível:GLOBALaddressToSymbol. Nível:GLOBALdemangle. Nível:GLOBAL
FONTES
Permite usar fontes de dados externas. Aplica-se a motores de tabela e funções de tabela.
READ. Nível:GLOBAL_WITH_PARAMETERWRITE. Nível:GLOBAL_WITH_PARAMETER
Parâmetros possíveis:
AZUREBIGQUERYFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
Exemplos:
- Para criar uma tabela com o motor de tabela MySQL, você precisa dos privilégios
CREATE TABLE (ON db.table_name)eMYSQL. - Para usar a função de tabela mysql, você precisa dos privilégios
CREATE TEMPORARY TABLEeMYSQL.
Concessões de filtro por origem
Você pode conceder acesso a URIs de origem específicas usando filtros de expressão regular. Isso permite um controle mais granular sobre quais fontes de dados externas os usuários podem acessar.
Sintaxe:
GRANT READ ON S3('regexp_pattern') TO userEsta concessão permitirá que o usuário leia apenas URIs do S3 que correspondam ao padrão de expressão regular especificado.
Exemplos:
Conceda acesso a caminhos específicos em buckets do 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 johnConcedendo novamente com GRANT OPTION:
Se a concessão original tiver WITH GRANT OPTION, ele poderá ser concedido novamente com 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 aliceLimitações importantes:
- Revogações parciais não são permitidas: Não é possível revogar um subconjunto de um padrão de filtro concedido. É necessário revogar toda a concessão e concedê-la novamente com novos padrões, se necessário.
- Concessões com curinga não são permitidas: Não é possível usar
GRANT READ ON *('regexp')nem padrões semelhantes compostos apenas por curingas. É necessário especificar uma source.
dictGet
dictGet. Aliases:dictHas,dictGetHierarchy,dictGetRoot,dictGetChildren,dictGetDescendants,dictIsIn
Permite ao usuário executar as funções dictGet, dictHas, dictGetHierarchy, dictGetRoot, dictGetChildren, dictGetDescendants e dictIsIn.
Nível de privilégio: DICTIONARY.
Exemplos
GRANT dictGet ON mydb.mydictionary TO johnGRANT dictGet ON mydictionary TO john
displaySecretsInShowAndSelect
Permite que um usuário visualize segredos em consultas SHOW e SELECT se tanto a
configuração do servidor display_secrets_in_show_and_select
quanto a
configuração de formato format_display_secrets_in_show_and_select
estiverem ativadas.
NAMED COLLECTION ADMIN
Permite uma determinada operação em uma coleção nomeada especificada. Antes da versão 23.7, chamava-se NAMED COLLECTION CONTROL; a partir da 23.7, NAMED COLLECTION ADMIN foi adicionada, e NAMED COLLECTION CONTROL foi mantida como alias.
NAMED COLLECTION ADMIN. Nível:NAMED_COLLECTION. Aliases:NAMED COLLECTION CONTROLCREATE NAMED COLLECTION. Nível:NAMED_COLLECTIONDROP NAMED COLLECTION. Nível:NAMED_COLLECTIONALTER NAMED COLLECTION. Nível:NAMED_COLLECTIONSHOW NAMED COLLECTIONS. Nível:NAMED_COLLECTION. Aliases:SHOW NAMED COLLECTIONSSHOW NAMED COLLECTIONS SECRETS. Nível:NAMED_COLLECTION. Aliases:SHOW NAMED COLLECTIONS SECRETSNAMED COLLECTION. Nível:NAMED_COLLECTION. Aliases:NAMED COLLECTION USAGE, USE NAMED COLLECTION
Diferentemente de todos os outros privilégios (CREATE, DROP, ALTER, SHOW), o privilégio NAMED COLLECTION foi adicionado apenas na 23.7, enquanto todos os demais foram adicionados antes, na 22.12.
Exemplos
Supondo que uma coleção nomeada se chame abc, concedemos o privilégio CREATE NAMED COLLECTION ao usuário john.
GRANT CREATE NAMED COLLECTION ON abc TO john
TABLE ENGINE
Permite usar um motor de tabela específico ao criar uma tabela. Aplica-se a motores de tabela.
Exemplos
GRANT TABLE ENGINE ON * TO johnGRANT TABLE ENGINE ON TinyLog TO john
Alguns motores de tabela com fontes externas podem exigir permissões READ/WRITE na fonte correspondente. Veja fonte.
Por exemplo, para o motor de tabela AzureBlobStorage, a concessão a seguir pode ser necessário.
GRANT READ, WRITE ON AZURE TO john
ALL
Concede todos os privilégios sobre a entidade regulada a uma conta de usuário ou a uma função.
NONE
Não concede privilégio algum.
ADMIN OPTION
O privilégio ADMIN OPTION permite que um usuário conceda sua função a outro usuário.