Saltar al contenido principal
  • 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).
Aunque hay muchas tablas del sistema a las que los usuarios nuevos pueden acceder de forma predeterminada, es posible que no puedan acceder a todas las tablas del sistema por defecto sin que se les concedan privilegios. Además, el acceso a determinadas tablas del sistema, como system.zookeeper, está restringido para los usuarios de Cloud por motivos de seguridad.
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.
La funcionalidad que se describe a continuación está disponible a partir de la versión 24.10 de ClickHouse.
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 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
      • FILE
      • HDFS
      • HIVE
      • JDBC
      • KAFKA
      • MONGO
      • MYSQL
      • NATS
      • ODBC
      • POSTGRES
      • RABBITMQ
      • REDIS
      • REMOTE
      • S3
      • SQLITE
      • URL
    • SYSTEM
      • 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 PRIMARY INDEX CACHE
      • SYSTEM DROP REPLICA
      • SYSTEM FAILPOINT
      • SYSTEM FETCHES
      • SYSTEM FLUSH
        • SYSTEM FLUSH ASYNC INSERT QUEUE
        • SYSTEM FLUSH LOGS
      • SYSTEM JEMALLOC
      • SYSTEM KILL QUERY
      • SYSTEM KILL TRANSACTION
      • 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 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 VIEWS
      • 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 y ALTER DROP 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 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 y ALTER DROP 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.
Syntax
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:
Privilegios insuficientes. Para ejecutar esta consulta, es necesario tener el 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.xml
<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 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 FLUSH. Nivel: GROUP
      • SYSTEM FLUSH DISTRIBUTED. Nivel: TABLE. Alias: FLUSH DISTRIBUTED
      • SYSTEM FLUSH LOGS. Nivel: GLOBAL. Alias: FLUSH LOGS
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
  • FILE
  • HDFS
  • HIVE
  • JDBC
  • KAFKA
  • MONGO
  • MYSQL
  • NATS
  • ODBC
  • POSTGRES
  • RABBITMQ
  • REDIS
  • REMOTE
  • S3
  • SQLITE
  • URL
La separación de los privilegios READ/WRITE para fuentes está disponible a partir de la versión 25.7 y solo con la configuración del servidor access_control_improvements.enable_read_write_grantsDe lo contrario, debe usar la sintaxis GRANT AZURE ON *.* TO user, que equivale al nuevo GRANT READ, WRITE ON AZURE TO user
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

Esta función está disponible a partir de la versión 25.8 y solo con la configuración del servidor access_control_improvements.enable_read_write_grants
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:
-- Permitir al usuario leer solo desde rutas s3://foo/
GRANT READ ON S3('s3://foo/.*') TO john

-- Permitir al usuario leer desde patrones de archivo específicos
GRANT READ ON S3('s3://mybucket/data/2024/.*\.parquet') TO analyst

-- Se pueden otorgar múltiples filtros al mismo usuario
GRANT READ ON S3('s3://foo/.*') TO john
GRANT READ ON S3('s3://bar/.*') TO john
El filtro de origen usa regexp como parámetro, por lo que un privilegio GRANT READ ON URL('http://www.google.com') TO john;permitirá consultas como
SELECT * FROM url('https://www.google.com');
SELECT * FROM url('https://www-google.com');
porque . se interpreta como cualquier carácter individual en las expresiones regulares. Esto puede dar lugar a una posible vulnerabilidad. El privilegio correcto debería ser
GRANT READ ON URL('https://www\.google\.com') TO john;
Volver a conceder con GRANT OPTION: Si el privilegio original incluye WITH GRANT OPTION, puede volver a concederse con GRANT CURRENT GRANTS:
-- Grant original con GRANT OPTION
GRANT READ ON S3('s3://foo/.*') TO john WITH GRANT OPTION

-- John ahora puede volver a otorgar este acceso a otros
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, dictIsIn
Permite que un usuario ejecute las funciones dictGet, dictHas, dictGetHierarchy, 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

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
De forma predeterminada, por motivos de compatibilidad con versiones anteriores, al crear una tabla con un motor de tabla específico se ignoran los privilegios; sin embargo, puede cambiar este comportamiento estableciendo table_engines_require_grant en true en config.xml.
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.
El privilegio ALL no es compatible con ClickHouse Cloud, donde el usuario default tiene permisos limitados. Los usuarios pueden otorgar los permisos máximos a otro usuario concediéndole default_role. Consulta aquí para obtener más detalles. Los usuarios también pueden usar GRANT CURRENT GRANTS con el usuario default para lograr un efecto similar a ALL.

NONE

No otorga ningún privilegio.

ADMIN OPTION

El privilegio ADMIN OPTION permite a un usuario conceder su rol a otro usuario.
Última modificación el 10 de junio de 2026