Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

GRANT

  • 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 OPTION

Esto 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_granted

GRANT 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 -- concedido

Todas 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 -- incorrecto

Privilegios

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:

  • ALL
    • GESTIÓN DE ACCESOS
      • ALLOW SQL SECURITY NONE
      • ALTER QUOTA
      • ALTER ROLE
      • ALTER ROW POLICY
      • ALTER SETTINGS PROFILE
      • ALTER USER
      • CREATE QUOTA
      • CREATE ROLE
      • CREATE ROW POLICY
      • CREATE SETTINGS PROFILE
      • CREATE USER
      • DROP QUOTA
      • DROP ROLE
      • DROP ROW POLICY
      • DROP SETTINGS PROFILE
      • DROP USER
      • ROLE ADMIN
      • SHOW ACCESS
        • SHOW QUOTAS
        • SHOW ROLES
        • SHOW ROW POLICIES
        • SHOW SETTINGS PROFILES
        • SHOW USERS
    • ALTER
      • ALTER DATABASE
        • ALTER DATABASE SETTINGS
      • ALTER TABLE
        • ALTER COLUMN
          • ALTER ADD COLUMN
          • ALTER CLEAR COLUMN
          • ALTER COMMENT COLUMN
          • ALTER DROP COLUMN
          • ALTER MATERIALIZE COLUMN
          • ALTER MODIFY COLUMN
          • ALTER RENAME COLUMN
        • ALTER CONSTRAINT
          • ALTER ADD CONSTRAINT
          • ALTER DROP CONSTRAINT
          • ALTER MODIFY CONSTRAINT
        • ALTER DELETE
        • ALTER FETCH PARTITION
        • ALTER FREEZE PARTITION
        • ALTER INDEX
          • ALTER ADD INDEX
          • ALTER CLEAR INDEX
          • ALTER DROP INDEX
          • ALTER MATERIALIZE INDEX
          • ALTER ORDER BY
          • ALTER SAMPLE BY
        • ALTER MATERIALIZE TTL
        • ALTER MODIFY COMMENT
        • ALTER MOVE PARTITION
        • ALTER PROJECTION
        • ALTER SETTINGS
        • ALTER STATISTICS
          • ALTER ADD STATISTICS
          • ALTER DROP STATISTICS
          • ALTER MATERIALIZE STATISTICS
          • ALTER MODIFY STATISTICS
        • ALTER TTL
        • ALTER UPDATE
        • ALTER TABLE EXECUTE
      • ALTER VIEW
        • ALTER VIEW MODIFY QUERY
        • ALTER VIEW REFRESH
        • ALTER VIEW MODIFY SQL SECURITY
    • BACKUP
    • CLUSTER
    • CREATE
      • CREATE ARBITRARY TEMPORARY TABLE
        • CREATE TEMPORARY TABLE
      • CREATE DATABASE
      • CREATE DICTIONARY
      • CREATE FUNCTION
      • CREATE RESOURCE
      • CREATE TABLE
      • CREATE VIEW
      • CREATE WORKLOAD
    • dictGet
    • displaySecretsInShowAndSelect
    • DROP
      • DROP DATABASE
      • DROP DICTIONARY
      • DROP FUNCTION
      • DROP RESOURCE
      • DROP TABLE
      • DROP VIEW
      • DROP WORKLOAD
    • INSERT
    • INTROSPECTION
      • addressToLine
      • addressToLineWithInlines
      • addressToSymbol
      • demangle
    • KILL QUERY
    • KILL TRANSACTION
    • MOVE PARTITION BETWEEN SHARDS
    • NAMED COLLECTION ADMIN
      • ALTER NAMED COLLECTION
      • CREATE NAMED COLLECTION
      • DROP NAMED COLLECTION
      • NAMED COLLECTION
      • SHOW NAMED COLLECTIONS
      • SHOW NAMED COLLECTIONS SECRETS
    • OPTIMIZE
    • SELECT
    • SET DEFINER
    • SHOW
      • SHOW COLUMNS
      • SHOW DATABASES
      • SHOW DICTIONARIES
      • SHOW TABLES
    • SHOW FILESYSTEM CACHES
    • FUENTES
      • AZURE
      • BIGQUERY
      • FILE
      • HDFS
      • HIVE
      • JDBC
      • KAFKA
      • MONGO
      • MYSQL
      • NATS
      • ODBC
      • POSTGRES
      • RABBITMQ
      • REDIS
      • REMOTE
      • S3
      • SQLITE
      • URL
    • SYSTEM
      • SYSTEM BACKGROUND
        • SYSTEM STREAMING ENGINES
        • SYSTEM VIEWS
      • SYSTEM CLEANUP
      • SYSTEM DROP CACHE
        • SYSTEM DROP COMPILED EXPRESSION CACHE
        • SYSTEM DROP CONNECTIONS CACHE
        • SYSTEM DROP DISTRIBUTED CACHE
        • SYSTEM DROP DNS CACHE
        • SYSTEM DROP FILESYSTEM CACHE
        • SYSTEM DROP FORMAT SCHEMA CACHE
        • SYSTEM DROP MARK CACHE
        • SYSTEM DROP MMAP CACHE
        • SYSTEM DROP PAGE CACHE
        • SYSTEM DROP PRIMARY INDEX CACHE
        • SYSTEM DROP QUERY CACHE
        • SYSTEM DROP S3 CLIENT CACHE
        • SYSTEM DROP SCHEMA CACHE
        • SYSTEM DROP UNCOMPRESSED CACHE
      • SYSTEM DROP REPLICA
      • SYSTEM FAILPOINT
      • SYSTEM FETCHES
      • SYSTEM FLUSH
        • SYSTEM FLUSH ASYNC INSERT QUEUE
        • SYSTEM FLUSH LOGS
      • SYSTEM JEMALLOC
      • SYSTEM LISTEN
      • SYSTEM LOAD PRIMARY KEY
      • SYSTEM MERGES
      • SYSTEM MOVES
      • SYSTEM PULLING REPLICATION LOG
      • SYSTEM REDUCE BLOCKING PARTS
      • SYSTEM REPLICATION QUEUES
      • SYSTEM REPLICA READINESS
      • SYSTEM RESET DDL WORKER
      • SYSTEM RESTART DISK
      • SYSTEM RESTART REPLICA
      • SYSTEM RESTORE REPLICA
      • SYSTEM RELOAD
        • SYSTEM RELOAD ASYNCHRONOUS METRICS
        • SYSTEM RELOAD CONFIG
          • SYSTEM RELOAD DICTIONARY
          • SYSTEM RELOAD EMBEDDED DICTIONARIES
          • SYSTEM RELOAD FUNCTION
          • SYSTEM RELOAD MODEL
          • SYSTEM RELOAD USERS
      • SYSTEM SENDS
        • SYSTEM DISTRIBUTED SENDS
        • SYSTEM REPLICATED SENDS
      • SYSTEM SHUTDOWN
      • SYSTEM SYNC DATABASE REPLICA
      • SYSTEM SYNC FILE CACHE
      • SYSTEM SYNC FILESYSTEM CACHE
      • SYSTEM SYNC REPLICA
      • SYSTEM SYNC TRANSACTION LOG
      • SYSTEM THREAD FUZZER
      • SYSTEM TTL MERGES
      • SYSTEM UNFREEZE
      • SYSTEM UNLOAD PRIMARY KEY
      • SYSTEM VIRTUAL PARTS UPDATE
      • SYSTEM WAIT LOADING PARTS
    • TABLE ENGINE
    • TRUNCATE
    • UNDROP TABLE
  • NONE

Ejemplos de cómo se trata esta jerarquía:

  • El privilegio ALTER incluye todos los demás privilegios ALTER*.
  • ALTER CONSTRAINT incluye los privilegios ALTER ADD CONSTRAINT, ALTER DROP CONSTRAINT y ALTER 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 nivel GROUP, solo se conceden los privilegios del grupo que corresponden a la sintaxis utilizada.

Ejemplos de sintaxis permitida:

  • GRANT SELECT(x) ON db.table TO user
  • GRANT SELECT ON db.* TO user

Ejemplos de sintaxis no permitida:

  • GRANT CREATE USER(x) ON db.table TO user
  • GRANT 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 john

Este 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 john

El 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: GROUP
    • ALTER UPDATE. Nivel: COLUMN. Alias: UPDATE
    • ALTER DELETE. Nivel: COLUMN. Alias: DELETE
    • ALTER COLUMN. Nivel: GROUP
    • ALTER ADD COLUMN. Nivel: COLUMN. Alias: ADD COLUMN
    • ALTER DROP COLUMN. Nivel: COLUMN. Alias: DROP COLUMN
    • ALTER MODIFY COLUMN. Nivel: COLUMN. Alias: MODIFY COLUMN
    • ALTER COMMENT COLUMN. Nivel: COLUMN. Alias: COMMENT COLUMN
    • ALTER CLEAR COLUMN. Nivel: COLUMN. Alias: CLEAR COLUMN
    • ALTER RENAME COLUMN. Nivel: COLUMN. Alias: RENAME COLUMN
    • ALTER INDEX. Nivel: GROUP. Alias: INDEX
    • ALTER ORDER BY. Nivel: TABLE. Alias: ALTER MODIFY ORDER BY, MODIFY ORDER BY
    • ALTER SAMPLE BY. Nivel: TABLE. Alias: ALTER MODIFY SAMPLE BY, MODIFY SAMPLE BY
    • ALTER ADD INDEX. Nivel: TABLE. Alias: ADD INDEX
    • ALTER DROP INDEX. Nivel: TABLE. Alias: DROP INDEX
    • ALTER MATERIALIZE INDEX. Nivel: TABLE. Alias: MATERIALIZE INDEX
    • ALTER CLEAR INDEX. Nivel: TABLE. Alias: CLEAR INDEX
    • ALTER CONSTRAINT. Nivel: GROUP. Alias: CONSTRAINT
    • ALTER ADD CONSTRAINT. Nivel: TABLE. Alias: ADD CONSTRAINT
    • ALTER DROP CONSTRAINT. Nivel: TABLE. Alias: DROP CONSTRAINT
    • ALTER MODIFY CONSTRAINT. Nivel: TABLE. Alias: MODIFY CONSTRAINT
    • ALTER TTL. Nivel: TABLE. Alias: ALTER MODIFY TTL, MODIFY TTL
    • ALTER MATERIALIZE TTL. Nivel: TABLE. Alias: MATERIALIZE TTL
    • ALTER SETTINGS. Nivel: TABLE. Alias: ALTER SETTING, ALTER MODIFY SETTING, MODIFY SETTING
    • ALTER MOVE PARTITION. Nivel: TABLE. Alias: ALTER MOVE PART, MOVE PARTITION, MOVE PART
    • ALTER FETCH PARTITION. Nivel: TABLE. Alias: ALTER FETCH PART, FETCH PARTITION, FETCH PART
    • ALTER FREEZE PARTITION. Nivel: TABLE. Alias: FREEZE PARTITION
    • ALTER EXECUTE. Nivel: TABLE. Alias: ALTER TABLE EXECUTE
    • ALTER VIEW. Nivel: GROUP
    • ALTER VIEW REFRESH. Nivel: VIEW. Alias: REFRESH VIEW
    • ALTER VIEW MODIFY QUERY. Nivel: VIEW. Alias: ALTER TABLE MODIFY QUERY
    • ALTER VIEW MODIFY SQL SECURITY. Nivel: VIEW. Alias: ALTER TABLE MODIFY SQL SECURITY

Ejemplos de cómo se aplica esta jerarquía:

  • El privilegio ALTER incluye todos los demás privilegios ALTER*.
  • ALTER CONSTRAINT incluye los privilegios ALTER ADD CONSTRAINT, ALTER DROP CONSTRAINT y ALTER MODIFY CONSTRAINT.

Notas

  • El privilegio MODIFY SETTING permite 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 ATTACH requiere el privilegio CREATE.
  • La operación DETACH requiere 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 privilegio ALTER UPDATE, ALTER TABLE o ALTER.

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: GROUP
    • CREATE DATABASE. Nivel: DATABASE
    • CREATE TABLE. Nivel: TABLE
      • CREATE ARBITRARY TEMPORARY TABLE. Nivel: GLOBAL
        • CREATE TEMPORARY TABLE. Nivel: GLOBAL
    • CREATE VIEW. Nivel: VIEW
    • CREATE DICTIONARY. Nivel: DICTIONARY

Notas

  • Para eliminar la tabla creada, el usuario necesita DROP.

CLUSTER

Permite ejecutar consultas ON CLUSTER.

Syntaxsql
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.

config.xmlyaml
<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: GROUP
    • DROP DATABASE. Nivel: DATABASE
    • DROP TABLE. Nivel: TABLE
    • DROP VIEW. Nivel: VIEW
    • DROP 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: GROUP
    • SHOW DATABASES. Nivel: DATABASE. Permite ejecutar las consultas SHOW DATABASES, SHOW CREATE DATABASE, USE <database>.
    • SHOW TABLES. Nivel: TABLE. Permite ejecutar las consultas SHOW TABLES, EXISTS <table>, CHECK <table>.
    • SHOW COLUMNS. Nivel: COLUMN. Permite ejecutar las consultas SHOW CREATE TABLE, DESCRIBE.
    • SHOW DICTIONARIES. Nivel: DICTIONARY. Permite ejecutar las consultas SHOW 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: GROUP
    • CREATE USER. Nivel: GLOBAL
    • ALTER USER. Nivel: GLOBAL
    • DROP USER. Nivel: GLOBAL
    • CREATE ROLE. Nivel: GLOBAL
    • ALTER ROLE. Nivel: GLOBAL
    • DROP ROLE. Nivel: GLOBAL
    • ROLE ADMIN. Nivel: GLOBAL
    • CREATE ROW POLICY. Nivel: GLOBAL. Alias: CREATE POLICY
    • ALTER ROW POLICY. Nivel: GLOBAL. Alias: ALTER POLICY
    • DROP ROW POLICY. Nivel: GLOBAL. Alias: DROP POLICY
    • CREATE QUOTA. Nivel: GLOBAL
    • ALTER QUOTA. Nivel: GLOBAL
    • DROP QUOTA. Nivel: GLOBAL
    • CREATE SETTINGS PROFILE. Nivel: GLOBAL. Alias: CREATE PROFILE
    • ALTER SETTINGS PROFILE. Nivel: GLOBAL. Alias: ALTER PROFILE
    • DROP SETTINGS PROFILE. Nivel: GLOBAL. Alias: DROP PROFILE
    • SHOW ACCESS. Nivel: GROUP
      • SHOW_USERS. Nivel: GLOBAL. Alias: SHOW CREATE USER
      • SHOW_ROLES. Nivel: GLOBAL. Alias: SHOW CREATE ROLE
      • SHOW_ROW_POLICIES. Nivel: GLOBAL. Alias: SHOW POLICIES, SHOW CREATE ROW POLICY, SHOW CREATE POLICY
      • SHOW_QUOTAS. Nivel: GLOBAL. Alias: SHOW CREATE QUOTA
      • SHOW_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: GROUP
    • SYSTEM SHUTDOWN. Nivel: GLOBAL. Alias: SYSTEM KILL, SHUTDOWN
    • SYSTEM DROP CACHE. Alias: DROP CACHE
      • SYSTEM DROP DNS CACHE. Nivel: GLOBAL. Alias: SYSTEM CLEAR DNS CACHE, SYSTEM DROP DNS, DROP DNS CACHE, DROP DNS
      • SYSTEM DROP MARK CACHE. Nivel: GLOBAL. Alias: SYSTEM CLEAR MARK CACHE, SYSTEM DROP MARK, DROP MARK CACHE, DROP MARKS
      • SYSTEM DROP UNCOMPRESSED CACHE. Nivel: GLOBAL. Alias: SYSTEM CLEAR UNCOMPRESSED CACHE, SYSTEM DROP UNCOMPRESSED, DROP UNCOMPRESSED CACHE, DROP UNCOMPRESSED
    • SYSTEM RELOAD. Nivel: GROUP
      • SYSTEM RELOAD CONFIG. Nivel: GLOBAL. Alias: RELOAD CONFIG
      • SYSTEM RELOAD DICTIONARY. Nivel: GLOBAL. Alias: SYSTEM RELOAD DICTIONARIES, RELOAD DICTIONARY, RELOAD DICTIONARIES, SYSTEM UNLOAD DICTIONARY, SYSTEM UNLOAD DICTIONARIES, UNLOAD DICTIONARY, UNLOAD DICTIONARIES
        • SYSTEM RELOAD EMBEDDED DICTIONARIES. Nivel: GLOBAL. Alias: RELOAD EMBEDDED DICTIONARIES
    • SYSTEM MERGES. Nivel: TABLE. Alias: SYSTEM STOP MERGES, SYSTEM START MERGES, STOP MERGES, START MERGES
    • SYSTEM TTL MERGES. Nivel: TABLE. Alias: SYSTEM STOP TTL MERGES, SYSTEM START TTL MERGES, STOP TTL MERGES, START TTL MERGES
    • SYSTEM FETCHES. Nivel: TABLE. Alias: SYSTEM STOP FETCHES, SYSTEM START FETCHES, STOP FETCHES, START FETCHES
    • SYSTEM MOVES. Nivel: TABLE. Alias: SYSTEM STOP MOVES, SYSTEM START MOVES, STOP MOVES, START MOVES
    • SYSTEM SENDS. Nivel: GROUP. Alias: SYSTEM STOP SENDS, SYSTEM START SENDS, STOP SENDS, START SENDS
      • SYSTEM DISTRIBUTED SENDS. Nivel: TABLE. Alias: SYSTEM STOP DISTRIBUTED SENDS, SYSTEM START DISTRIBUTED SENDS, STOP DISTRIBUTED SENDS, START DISTRIBUTED SENDS
      • SYSTEM 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 QUEUES
    • SYSTEM SYNC REPLICA. Nivel: TABLE. Alias: SYNC REPLICA
    • SYSTEM RESTART REPLICA. Nivel: TABLE. Alias: RESTART REPLICA
    • SYSTEM BACKGROUND. Nivel: GROUP
      • SYSTEM STREAMING ENGINES. Nivel: TABLE
      • SYSTEM 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: GROUP
      • SYSTEM FLUSH DISTRIBUTED. Nivel: TABLE. Alias: FLUSH DISTRIBUTED
      • SYSTEM 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 FUNCTIONS
    • addressToLine. Nivel: GLOBAL
    • addressToLineWithInlines. Nivel: GLOBAL
    • addressToSymbol. Nivel: GLOBAL
    • demangle. 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_PARAMETER
  • WRITE. Nivel: GLOBAL_WITH_PARAMETER

Parámetros posibles:

  • AZURE
  • BIGQUERY
  • FILE
  • HDFS
  • HIVE
  • JDBC
  • KAFKA
  • MONGO
  • MYSQL
  • NATS
  • ODBC
  • POSTGRES
  • RABBITMQ
  • REDIS
  • REMOTE
  • S3
  • SQLITE
  • URL

Ejemplos:

  • Para crear una tabla con el motor de tabla MySQL, se necesitan los privilegios CREATE TABLE (ON db.table_name) y MYSQL.
  • Para usar la función de tabla MySQL, se necesitan los privilegios CREATE TEMPORARY TABLE y MYSQL.

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 user

Este 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 john

Volver 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 alice

Limitaciones 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 john
  • GRANT 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 CONTROL
    • CREATE NAMED COLLECTION. Nivel: NAMED_COLLECTION
    • DROP NAMED COLLECTION. Nivel: NAMED_COLLECTION
    • ALTER NAMED COLLECTION. Nivel: NAMED_COLLECTION
    • SHOW NAMED COLLECTIONS. Nivel: NAMED_COLLECTION. Alias: SHOW NAMED COLLECTIONS
    • SHOW NAMED COLLECTIONS SECRETS. Nivel: NAMED_COLLECTION. Alias: SHOW NAMED COLLECTIONS SECRETS
    • NAMED 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

No es compatible con ClickHouse Cloud

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 john
  • GRANT 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

No es compatible con ClickHouse Cloud

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.

Navigation