- Otorga privilegios a cuentas de usuario o roles de ClickHouse.
- Asigna roles a cuentas de usuario o a otros roles.
Para revocar privilegios, use la sentencia REVOKE. También puede enumerar los privilegios otorgados con la sentencia SHOW GRANTS.
Sintaxis para otorgar privilegios
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 privilegio.role— Rol de usuario en ClickHouse.user— Cuenta de usuario de ClickHouse.
La cláusula WITH GRANT OPTION otorga al user o al role el permiso para ejecutar la consulta GRANT. Los usuarios pueden otorgar privilegios del mismo alcance que poseen o de un alcance menor.
La cláusula WITH REPLACE OPTION reemplaza los privilegios anteriores por privilegios nuevos para el user o role; si no se especifica, agrega privilegios.
Sintaxis para asignar un rol
GRANT [ON CLUSTER cluster_name] role [,...] TO {user | another_role | CURRENT_USER} [,...] [WITH ADMIN OPTION] [WITH REPLACE OPTION]role— rol de ClickHouse.user— cuenta de usuario de ClickHouse.
La cláusula WITH ADMIN OPTION otorga el privilegio ADMIN OPTION a user o role.
La cláusula WITH REPLACE OPTION reemplaza los roles anteriores por el nuevo rol para user o role; si no se especifica, añade los roles.
Sintaxis 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 privilegio.role— Rol de usuario de ClickHouse.user— Cuenta de usuario de ClickHouse.
Usar la sentencia CURRENT GRANTS permite conceder todos los privilegios especificados al usuario o rol indicado.
Si no se especifica ninguno de los privilegios, el usuario o rol indicado recibirá todos los privilegios disponibles para CURRENT_USER.
Uso
Para usar GRANT, tu cuenta debe tener el privilegio GRANT OPTION. Solo puedes conceder privilegios dentro del alcance de los privilegios de tu cuenta.
Por ejemplo, el administrador ha concedido privilegios a la cuenta john mediante la consulta:
GRANT SELECT(x,y) ON db.table TO john WITH GRANT OPTIONEsto significa que john tiene permiso para ejecutar:
SELECT x,y FROM db.table.SELECT x FROM db.table.SELECT y FROM db.table.
john no puede ejecutar SELECT z FROM db.table. SELECT * FROM db.table tampoco está disponible. Al procesar esta consulta, ClickHouse no devuelve ningún dato, ni siquiera x e y. La única excepción es cuando una tabla contiene solo las columnas x e y. En ese caso, ClickHouse devuelve todos los datos.
Además, john tiene el privilegio GRANT OPTION, por lo que puede conceder a otros usuarios privilegios del mismo ámbito o de uno más reducido.
El acceso a la base de datos system siempre está permitido (ya que esta base de datos se utiliza para procesar consultas).
Puede conceder varios privilegios a varias cuentas en una sola consulta. La consulta GRANT SELECT, INSERT ON *.* TO john, robin permite que las cuentas john y robin ejecuten las consultas INSERT y SELECT sobre todas las tablas de todas las bases de datos del servidor.
Privilegios con comodines
Al especificar privilegios, puede usar un asterisco (*) en lugar del nombre de una tabla o de una base de datos. Por ejemplo, la consulta GRANT SELECT ON db.* TO john permite a john ejecutar la consulta SELECT sobre todas las tablas de la base de datos db.
Además, puede omitir el nombre de la base de datos. En ese caso, los privilegios se otorgan para la base de datos actual.
Por ejemplo, GRANT SELECT ON * TO john otorga el privilegio sobre todas las tablas de la base de datos actual, y GRANT SELECT ON mytable TO john otorga el privilegio sobre la tabla mytable en la base de datos actual.
También puede colocar asteriscos al final del nombre de una tabla o de una base de datos. Esta funcionalidad permite otorgar privilegios sobre un prefijo abstracto de la ruta de la tabla.
Ejemplo: GRANT SELECT ON db.my_tables* TO john. Esta consulta permite a john ejecutar la consulta SELECT sobre todas las tablas de la base de datos db con el prefijo my_tables*.
Más ejemplos:
GRANT SELECT ON db.my_tables* TO john
SELECT * FROM db.my_tables -- granted
SELECT * FROM db.my_tables_0 -- granted
SELECT * FROM db.my_tables_1 -- granted
SELECT * FROM db.other_table -- not_granted
SELECT * FROM db2.my_tables -- not_grantedGRANT 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 las tablas recién creadas dentro de las rutas sobre las que se hayan concedido privilegios heredarán automáticamente todos los privilegios de sus rutas padre.
Por ejemplo, si ejecuta la consulta GRANT SELECT ON db.* TO john y luego crea una nueva tabla db.new_table, el usuario john podrá ejecutar la consulta SELECT * FROM db.new_table.
Puede especificar un asterisco solo para los prefijos:
GRANT SELECT ON db.* TO john -- correcto
GRANT SELECT ON db*.* TO john -- correcto
GRANT SELECT ON *.my_table TO john -- incorrecto
GRANT SELECT ON foo*bar TO john -- incorrecto
GRANT SELECT ON *suffix TO john -- incorrecto
GRANT SELECT(foo) ON db.table* TO john -- incorrectoPrivilegios
Un privilegio es un permiso otorgado a un usuario para ejecutar determinados tipos de consultas.
Los privilegios tienen una estructura jerárquica y el conjunto de consultas permitidas depende del alcance del privilegio.
A continuación se muestra la jerarquía de privilegios en ClickHouse:
ALLGESTIÓN DE ACCESOSALLOW 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 CACHESFUENTESAZUREBIGQUERYFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
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
Ejemplos de cómo se trata esta jerarquía:
- El privilegio
ALTERincluye todos los demás privilegiosALTER*. ALTER CONSTRAINTincluye los privilegiosALTER ADD CONSTRAINT,ALTER DROP CONSTRAINTyALTER MODIFY CONSTRAINT.
Los privilegios se aplican en distintos niveles. Conocer el nivel indica qué sintaxis está disponible para el privilegio.
Niveles (de menor a mayor):
COLUMN— El privilegio puede concederse para una columna, una tabla, una base de datos o globalmente.TABLE— El privilegio puede concederse para una tabla, una base de datos o globalmente.VIEW— El privilegio puede concederse para una vista, una base de datos o globalmente.DICTIONARY— El privilegio puede concederse para un diccionario, una base de datos o globalmente.DATABASE— El privilegio puede concederse para una base de datos o globalmente.GLOBAL— El privilegio solo puede concederse globalmente.GROUP— Agrupa privilegios de distintos niveles. Cuando se concede un privilegio de nivelGROUP, solo se conceden los privilegios del grupo que corresponden a la sintaxis utilizada.
Ejemplos de sintaxis permitida:
GRANT SELECT(x) ON db.table TO userGRANT SELECT ON db.* TO user
Ejemplos de sintaxis no permitida:
GRANT CREATE USER(x) ON db.table TO userGRANT CREATE USER ON db.* TO user
El privilegio especial ALL concede todos los privilegios a una cuenta de usuario o a un rol.
De forma predeterminada, una cuenta de usuario o un rol no tiene privilegios.
Si un usuario o un rol no tiene privilegios, se muestra el privilegio NONE.
Algunas consultas, por su implementación, requieren un conjunto de privilegios. Por ejemplo, para ejecutar la consulta RENAME se necesitan los siguientes privilegios: SELECT, CREATE TABLE, INSERT y DROP TABLE.
SELECT
Permite ejecutar consultas SELECT.
Nivel de privilegio: COLUMN.
Descripción
El usuario al que se le haya concedido este privilegio puede ejecutar consultas SELECT sobre una lista específica de columnas de la tabla y la base de datos indicadas. Si el usuario incluye columnas distintas de las especificadas, la consulta no devuelve ningún dato.
Considere el siguiente privilegio:
GRANT SELECT(x,y) ON db.table TO johnEste privilegio permite a john ejecutar cualquier consulta SELECT que utilice datos de las columnas x y/o y de db.table, por ejemplo, SELECT x FROM db.table. john no puede ejecutar SELECT z FROM db.table. Tampoco puede ejecutar SELECT * FROM db.table. Al procesar esta consulta, ClickHouse no devuelve ningún dato, ni siquiera x e y. La única excepción es si una tabla contiene solo las columnas x e y; en ese caso, ClickHouse devuelve todos los datos.
INSERT
Permite ejecutar consultas INSERT.
Nivel de privilegio: COLUMN.
Descripción
El usuario al que se le haya concedido este privilegio puede ejecutar consultas INSERT sobre una lista determinada de columnas de la tabla y la base de datos especificadas. Si el usuario incluye columnas distintas de las especificadas, la consulta no inserta ningún dato.
Ejemplo
GRANT INSERT(x,y) ON db.table TO johnEl privilegio otorgado permite a john insertar datos en las columnas x y/o y de la tabla db.table.
ALTER
Permite ejecutar consultas ALTER según la siguiente jerarquía de privilegios:
ALTER. Nivel:COLUMN.ALTER TABLE. Nivel:GROUPALTER UPDATE. Nivel:COLUMN. Alias:UPDATEALTER DELETE. Nivel:COLUMN. Alias:DELETEALTER COLUMN. Nivel:GROUPALTER ADD COLUMN. Nivel:COLUMN. Alias:ADD COLUMNALTER DROP COLUMN. Nivel:COLUMN. Alias:DROP COLUMNALTER MODIFY COLUMN. Nivel:COLUMN. Alias:MODIFY COLUMNALTER COMMENT COLUMN. Nivel:COLUMN. Alias:COMMENT COLUMNALTER CLEAR COLUMN. Nivel:COLUMN. Alias:CLEAR COLUMNALTER RENAME COLUMN. Nivel:COLUMN. Alias:RENAME COLUMNALTER INDEX. Nivel:GROUP. Alias:INDEXALTER ORDER BY. Nivel:TABLE. Alias:ALTER MODIFY ORDER BY,MODIFY ORDER BYALTER SAMPLE BY. Nivel:TABLE. Alias:ALTER MODIFY SAMPLE BY,MODIFY SAMPLE BYALTER ADD INDEX. Nivel:TABLE. Alias:ADD INDEXALTER DROP INDEX. Nivel:TABLE. Alias:DROP INDEXALTER MATERIALIZE INDEX. Nivel:TABLE. Alias:MATERIALIZE INDEXALTER CLEAR INDEX. Nivel:TABLE. Alias:CLEAR INDEXALTER CONSTRAINT. Nivel:GROUP. Alias:CONSTRAINTALTER ADD CONSTRAINT. Nivel:TABLE. Alias:ADD CONSTRAINTALTER DROP CONSTRAINT. Nivel:TABLE. Alias:DROP CONSTRAINTALTER MODIFY CONSTRAINT. Nivel:TABLE. Alias:MODIFY CONSTRAINTALTER TTL. Nivel:TABLE. Alias:ALTER MODIFY TTL,MODIFY TTLALTER MATERIALIZE TTL. Nivel:TABLE. Alias:MATERIALIZE TTLALTER SETTINGS. Nivel:TABLE. Alias:ALTER SETTING,ALTER MODIFY SETTING,MODIFY SETTINGALTER MOVE PARTITION. Nivel:TABLE. Alias:ALTER MOVE PART,MOVE PARTITION,MOVE PARTALTER FETCH PARTITION. Nivel:TABLE. Alias:ALTER FETCH PART,FETCH PARTITION,FETCH PARTALTER FREEZE PARTITION. Nivel:TABLE. Alias:FREEZE PARTITIONALTER EXECUTE. Nivel:TABLE. Alias:ALTER TABLE EXECUTEALTER VIEW. Nivel:GROUPALTER VIEW REFRESH. Nivel:VIEW. Alias:REFRESH VIEWALTER VIEW MODIFY QUERY. Nivel:VIEW. Alias:ALTER TABLE MODIFY QUERYALTER VIEW MODIFY SQL SECURITY. Nivel:VIEW. Alias:ALTER TABLE MODIFY SQL SECURITY
Ejemplos de cómo se aplica esta jerarquía:
- El privilegio
ALTERincluye todos los demás privilegiosALTER*. ALTER CONSTRAINTincluye los privilegiosALTER ADD CONSTRAINT,ALTER DROP CONSTRAINTyALTER MODIFY CONSTRAINT.
Notas
- El privilegio
MODIFY SETTINGpermite modificar la configuración del motor de la tabla. No afecta a la configuración ni a los parámetros del servidor. - La operación
ATTACHrequiere el privilegio CREATE. - La operación
DETACHrequiere el privilegio DROP. - Para detener una mutación con la consulta KILL MUTATION, debes tener el privilegio necesario para iniciar esa mutación. Por ejemplo, si quieres detener la consulta
ALTER UPDATE, necesitas el privilegioALTER UPDATE,ALTER TABLEoALTER.
BACKUP
Permite ejecutar [BACKUP] en las consultas. Para obtener más información sobre las copias de seguridad, consulte "Copia de seguridad y restauración".
CREATE
Permite ejecutar las consultas DDL CREATE y ATTACH según la siguiente jerarquía de privilegios:
CREATE. Nivel:GROUPCREATE DATABASE. Nivel:DATABASECREATE TABLE. Nivel:TABLECREATE ARBITRARY TEMPORARY TABLE. Nivel:GLOBALCREATE TEMPORARY TABLE. Nivel:GLOBAL
CREATE VIEW. Nivel:VIEWCREATE DICTIONARY. Nivel:DICTIONARY
Notas
- Para eliminar la tabla creada, el usuario necesita DROP.
CLUSTER
Permite ejecutar consultas ON CLUSTER.
GRANT CLUSTER ON *.* TO <username>De forma predeterminada, las consultas con ON CLUSTER requieren que al usuario se le haya concedido el privilegio CLUSTER.
Obtendrá el siguiente error si intenta usar ON CLUSTER en una consulta sin antes conceder el privilegio CLUSTER:
Not enough privileges. To execute this query, it's necessary to have the grant CLUSTER ON *.*.El comportamiento predeterminado puede modificarse estableciendo la opción on_cluster_queries_require_cluster_grant,
ubicada en la sección access_control_improvements de config.xml (véase más abajo), en false.
<access_control_improvements>
<on_cluster_queries_require_cluster_grant>true</on_cluster_queries_require_cluster_grant>
</access_control_improvements>DROP
Permite ejecutar consultas DROP y DETACH según la siguiente jerarquía de privilegios:
DROP. Nivel:GROUPDROP DATABASE. Nivel:DATABASEDROP TABLE. Nivel:TABLEDROP VIEW. Nivel:VIEWDROP DICTIONARY. Nivel:DICTIONARY
TRUNCATE
Permite ejecutar consultas TRUNCATE.
Nivel de privilegio: TABLE.
OPTIMIZE
Permite ejecutar consultas OPTIMIZE TABLE.
Nivel de privilegio: TABLE.
SHOW
Permite ejecutar consultas SHOW, DESCRIBE, USE y EXISTS según la siguiente jerarquía de privilegios:
SHOW. Nivel:GROUPSHOW DATABASES. Nivel:DATABASE. Permite ejecutar las consultasSHOW DATABASES,SHOW CREATE DATABASE,USE <database>.SHOW TABLES. Nivel:TABLE. Permite ejecutar las consultasSHOW TABLES,EXISTS <table>,CHECK <table>.SHOW COLUMNS. Nivel:COLUMN. Permite ejecutar las consultasSHOW CREATE TABLE,DESCRIBE.SHOW DICTIONARIES. Nivel:DICTIONARY. Permite ejecutar las consultasSHOW DICTIONARIES,SHOW CREATE DICTIONARY,EXISTS <dictionary>.
Notas
Un usuario tiene el privilegio SHOW si tiene cualquier otro privilegio sobre la tabla, el diccionario o la base de datos especificados.
KILL QUERY
Permite ejecutar consultas KILL según la siguiente jerarquía de privilegios:
Nivel de privilegio: GLOBAL.
Notas
El privilegio KILL QUERY permite que un usuario finalice las consultas de otros usuarios.
GESTIÓN DE ACCESO
Permite a un usuario ejecutar consultas para administrar usuarios, roles y políticas de fila.
ACCESS MANAGEMENT. Nivel:GROUPCREATE USER. Nivel:GLOBALALTER USER. Nivel:GLOBALDROP USER. Nivel:GLOBALCREATE ROLE. Nivel:GLOBALALTER ROLE. Nivel:GLOBALDROP ROLE. Nivel:GLOBALROLE ADMIN. Nivel:GLOBALCREATE ROW POLICY. Nivel:GLOBAL. Alias:CREATE POLICYALTER ROW POLICY. Nivel:GLOBAL. Alias:ALTER POLICYDROP ROW POLICY. Nivel:GLOBAL. Alias:DROP POLICYCREATE QUOTA. Nivel:GLOBALALTER QUOTA. Nivel:GLOBALDROP QUOTA. Nivel:GLOBALCREATE SETTINGS PROFILE. Nivel:GLOBAL. Alias:CREATE PROFILEALTER SETTINGS PROFILE. Nivel:GLOBAL. Alias:ALTER PROFILEDROP SETTINGS PROFILE. Nivel:GLOBAL. Alias:DROP PROFILESHOW ACCESS. Nivel:GROUPSHOW_USERS. Nivel:GLOBAL. Alias:SHOW CREATE USERSHOW_ROLES. Nivel:GLOBAL. Alias:SHOW CREATE ROLESHOW_ROW_POLICIES. Nivel:GLOBAL. Alias:SHOW POLICIES,SHOW CREATE ROW POLICY,SHOW CREATE POLICYSHOW_QUOTAS. Nivel:GLOBAL. Alias:SHOW CREATE QUOTASHOW_SETTINGS_PROFILES. Nivel:GLOBAL. Alias:SHOW PROFILES,SHOW CREATE SETTINGS PROFILE,SHOW CREATE PROFILE
ALLOW SQL SECURITY NONE. Nivel:GLOBAL. Alias:CREATE SQL SECURITY NONE,SQL SECURITY NONE,SECURITY NONE
El privilegio ROLE ADMIN permite a un usuario asignar y revocar cualquier rol, incluidos los que no le hayan sido asignados con la opción de administrador.
SYSTEM
Permite a un usuario ejecutar consultas SYSTEM según la siguiente jerarquía de privilegios.
SYSTEM. Nivel:GROUPSYSTEM SHUTDOWN. Nivel:GLOBAL. Alias:SYSTEM KILL,SHUTDOWNSYSTEM DROP CACHE. Alias:DROP CACHESYSTEM DROP DNS CACHE. Nivel:GLOBAL. Alias:SYSTEM CLEAR DNS CACHE,SYSTEM DROP DNS,DROP DNS CACHE,DROP DNSSYSTEM DROP MARK CACHE. Nivel:GLOBAL. Alias:SYSTEM CLEAR MARK CACHE,SYSTEM DROP MARK,DROP MARK CACHE,DROP MARKSSYSTEM DROP UNCOMPRESSED CACHE. Nivel:GLOBAL. Alias:SYSTEM CLEAR UNCOMPRESSED CACHE,SYSTEM DROP UNCOMPRESSED,DROP UNCOMPRESSED CACHE,DROP UNCOMPRESSED
SYSTEM RELOAD. Nivel:GROUPSYSTEM RELOAD CONFIG. Nivel:GLOBAL. Alias:RELOAD CONFIGSYSTEM RELOAD DICTIONARY. Nivel:GLOBAL. Alias:SYSTEM RELOAD DICTIONARIES,RELOAD DICTIONARY,RELOAD DICTIONARIES,SYSTEM UNLOAD DICTIONARY,SYSTEM UNLOAD DICTIONARIES,UNLOAD DICTIONARY,UNLOAD DICTIONARIESSYSTEM RELOAD EMBEDDED DICTIONARIES. Nivel:GLOBAL. Alias:RELOAD EMBEDDED DICTIONARIES
SYSTEM MERGES. Nivel:TABLE. Alias:SYSTEM STOP MERGES,SYSTEM START MERGES,STOP MERGES,START MERGESSYSTEM TTL MERGES. Nivel:TABLE. Alias:SYSTEM STOP TTL MERGES,SYSTEM START TTL MERGES,STOP TTL MERGES,START TTL MERGESSYSTEM FETCHES. Nivel:TABLE. Alias:SYSTEM STOP FETCHES,SYSTEM START FETCHES,STOP FETCHES,START FETCHESSYSTEM MOVES. Nivel:TABLE. Alias:SYSTEM STOP MOVES,SYSTEM START MOVES,STOP MOVES,START MOVESSYSTEM SENDS. Nivel:GROUP. Alias:SYSTEM STOP SENDS,SYSTEM START SENDS,STOP SENDS,START SENDSSYSTEM DISTRIBUTED SENDS. Nivel:TABLE. Alias:SYSTEM STOP DISTRIBUTED SENDS,SYSTEM START DISTRIBUTED SENDS,STOP DISTRIBUTED SENDS,START DISTRIBUTED SENDSSYSTEM REPLICATED SENDS. Nivel:TABLE. Alias:SYSTEM STOP REPLICATED SENDS,SYSTEM START REPLICATED SENDS,STOP REPLICATED SENDS,START REPLICATED SENDS
SYSTEM REPLICATION QUEUES. Nivel:TABLE. Alias:SYSTEM STOP REPLICATION QUEUES,SYSTEM START REPLICATION QUEUES,STOP REPLICATION QUEUES,START REPLICATION QUEUESSYSTEM SYNC REPLICA. Nivel:TABLE. Alias:SYNC REPLICASYSTEM RESTART REPLICA. Nivel:TABLE. Alias:RESTART REPLICASYSTEM BACKGROUND. Nivel:GROUPSYSTEM STREAMING ENGINES. Nivel:TABLESYSTEM VIEWS. Nivel:VIEW. Alias: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. Nivel:GROUPSYSTEM FLUSH DISTRIBUTED. Nivel:TABLE. Alias:FLUSH DISTRIBUTEDSYSTEM FLUSH LOGS. Nivel:GLOBAL. Alias:FLUSH LOGS
Los comandos SYSTEM UNLOAD DICTIONARY y SYSTEM UNLOAD DICTIONARIES reutilizan el privilegio SYSTEM RELOAD DICTIONARY, por lo que un usuario con SYSTEM RELOAD DICTIONARY también puede descargar diccionarios.
El privilegio SYSTEM RELOAD EMBEDDED DICTIONARIES se concede implícitamente con el privilegio SYSTEM RELOAD DICTIONARY ON *.*.
INTROSPECTION
Permite utilizar funciones de introspección.
INTROSPECTION. Nivel:GROUP. Alias:INTROSPECTION FUNCTIONSaddressToLine. Nivel:GLOBALaddressToLineWithInlines. Nivel:GLOBALaddressToSymbol. Nivel:GLOBALdemangle. Nivel:GLOBAL
FUENTES
Permite usar fuentes de datos externas. Se aplica a los motores de tabla y a las funciones de tabla.
READ. Nivel:GLOBAL_WITH_PARAMETERWRITE. Nivel:GLOBAL_WITH_PARAMETER
Parámetros posibles:
AZUREBIGQUERYFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
Ejemplos:
- Para crear una tabla con el motor de tabla MySQL, se necesitan los privilegios
CREATE TABLE (ON db.table_name)yMYSQL. - Para usar la función de tabla MySQL, se necesitan los privilegios
CREATE TEMPORARY TABLEyMYSQL.
Privilegios con filtro por origen
Puede conceder acceso a URI de origen específicas mediante filtros de expresiones regulares. Esto permite un control más preciso sobre las fuentes de datos externas a las que pueden acceder los usuarios.
Sintaxis:
GRANT READ ON S3('regexp_pattern') TO userEste privilegio permitirá al usuario leer únicamente desde URI de S3 que coincidan con el patrón de expresión regular especificado.
Ejemplos:
Otorgue acceso a rutas específicas de buckets de 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 johnVolver a conceder con GRANT OPTION:
Si el privilegio original incluye WITH GRANT OPTION, puede volver a concederse con 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 aliceLimitaciones importantes:
- No se permiten revocaciones parciales: No puede revocar solo un subconjunto de un patrón de filtro ya concedido. Debe revocar el privilegio completo y volver a concederlo con nuevos patrones si es necesario.
- No se permiten privilegios con comodines: No puede usar
GRANT READ ON *('regexp')ni patrones similares basados únicamente en comodines. Debe proporcionarse una source específica.
dictGet
dictGet. Alias:dictHas,dictGetHierarchy,dictGetRoot,dictGetChildren,dictGetDescendants,dictIsIn
Permite que un usuario ejecute las funciones dictGet, dictHas, dictGetHierarchy, dictGetRoot, dictGetChildren, dictGetDescendants, dictIsIn.
Nivel de privilegio: DICTIONARY.
Ejemplos
GRANT dictGet ON mydb.mydictionary TO johnGRANT dictGet ON mydictionary TO john
displaySecretsInShowAndSelect
Permite que un usuario vea secretos en consultas SHOW y SELECT si tanto la
display_secrets_in_show_and_select configuración del servidor
como la
format_display_secrets_in_show_and_select configuración de formato
están activadas.
NAMED COLLECTION ADMIN
Permite realizar una operación determinada sobre una colección con nombre especificada. Antes de la versión 23.7 se llamaba NAMED COLLECTION CONTROL, y a partir de la 23.7 se añadió NAMED COLLECTION ADMIN, mientras que NAMED COLLECTION CONTROL se conserva como alias.
NAMED COLLECTION ADMIN. Nivel:NAMED_COLLECTION. Alias:NAMED COLLECTION CONTROLCREATE NAMED COLLECTION. Nivel:NAMED_COLLECTIONDROP NAMED COLLECTION. Nivel:NAMED_COLLECTIONALTER NAMED COLLECTION. Nivel:NAMED_COLLECTIONSHOW NAMED COLLECTIONS. Nivel:NAMED_COLLECTION. Alias:SHOW NAMED COLLECTIONSSHOW NAMED COLLECTIONS SECRETS. Nivel:NAMED_COLLECTION. Alias:SHOW NAMED COLLECTIONS SECRETSNAMED COLLECTION. Nivel:NAMED_COLLECTION. Alias:NAMED COLLECTION USAGE, USE NAMED COLLECTION
A diferencia de todos los demás privilegios (CREATE, DROP, ALTER, SHOW), el privilegio NAMED COLLECTION solo se añadió en la versión 23.7, mientras que todos los demás se añadieron antes, en la versión 22.12.
Ejemplos
Suponiendo que una colección con nombre se llama abc, otorgamos el privilegio CREATE NAMED COLLECTION al usuario john.
GRANT CREATE NAMED COLLECTION ON abc TO john
TABLE ENGINE
Permite usar un motor de tabla específico al crear una tabla. Se aplica a los motores de tabla.
Ejemplos
GRANT TABLE ENGINE ON * TO johnGRANT TABLE ENGINE ON TinyLog TO john
Algunos motores de tabla con fuentes externas pueden requerir permisos READ/WRITE sobre la fuente correspondiente. Consulte Sources.
Por ejemplo, para el motor de tabla AzureBlobStorage, puede ser necesario el siguiente privilegio.
GRANT READ, WRITE ON AZURE TO john
ALL
Otorga todos los privilegios sobre una entidad a una cuenta de usuario o a un rol.
NONE
No otorga ningún privilegio.
ADMIN OPTION
El privilegio ADMIN OPTION permite a un usuario conceder su rol a otro usuario.