GRANT 

  • Accorder privilège pour ClickHouse comptes d'utilisateurs ou des rôles.
  • Affecte des rôles à des comptes d'utilisateurs ou à d'autres rôles.

Pour révoquer les privilèges, utilisez REVOKE déclaration. Vous pouvez également classer les privilèges accordés par le SHOW GRANTS déclaration.

Accorder La Syntaxe Des Privilèges 

GRANT [ON CLUSTER cluster_name] privilege[(column_name [,...])] [,...] ON {db.table|db.*|*.*|table|*} TO {user | role | CURRENT_USER} [,...] [WITH GRANT OPTION]
  • privilege — Type of privilege.
  • role — ClickHouse user role.
  • user — ClickHouse user account.

Le WITH GRANT OPTION clause de subventions user ou role avec l'autorisation de réaliser des GRANT requête. Les utilisateurs peuvent accorder des privilèges de la même portée qu'ils ont et moins.

Attribution De La Syntaxe Du Rôle 

GRANT [ON CLUSTER cluster_name] role [,...] TO {user | another_role | CURRENT_USER} [,...] [WITH ADMIN OPTION]
  • role — ClickHouse user role.
  • user — ClickHouse user account.

Le WITH ADMIN OPTION clause de jeux ADMIN OPTION privilège pour user ou role.

Utilisation 

Utiliser GRANT votre compte doit avoir le GRANT OPTION privilège. Vous ne pouvez accorder des privilèges que dans le cadre de vos privilèges de Compte.

Par exemple, l'administrateur a accordé des privilèges john compte par la requête:

GRANT SELECT(x,y) ON db.table TO john WITH GRANT OPTION

Cela signifie que john a la permission d'effectuer:

  • SELECT x,y FROM db.table.
  • SELECT x FROM db.table.
  • SELECT y FROM db.table.

john ne pouvez pas effectuer de SELECT z FROM db.table. Le SELECT * FROM db.table aussi n'est pas disponible. En traitant cette requête, ClickHouse ne renvoie aucune donnée, même x et y. La seule exception est si une table contient uniquement x et y colonnes, dans ce cas ClickHouse renvoie toutes les données.

Également john a l' GRANT OPTION privilège, de sorte qu'il peut accorder à d'autres utilisateurs avec des privilèges de la même ou de la plus petite portée.

Spécification des privilèges vous pouvez utiliser asterisk (*) au lieu d'une table ou d'un nom de base de données. Par exemple, l' GRANT SELECT ON db.* TO john requête permet john pour effectuer la SELECT requête sur toutes les tables dans db la base de données. En outre, vous pouvez omettre le nom de la base de données. Dans ce cas, des privilèges sont accordés pour la base de données actuelle, par exemple: GRANT SELECT ON * TO john accorde le privilège sur toutes les tables dans la base de données actuelle, GRANT SELECT ON mytable TO john accorde le privilège sur le mytable table dans la base de données actuelle.

L'accès à la system la base de données est toujours autorisée (puisque cette base de données est utilisée pour traiter les requêtes).

Vous pouvez accorder plusieurs privilèges à plusieurs comptes dans une requête. Requête GRANT SELECT, INSERT ON *.* TO john, robin permet de comptes john et robin pour effectuer la INSERT et SELECT des requêtes sur toutes les tables de toutes les bases de données sur le serveur.

Privilège 

Privilège est une autorisation pour effectuer un type spécifique de requêtes.

Les privilèges ont une structure hiérarchique. Un ensemble de requêtes autorisées dépend de la portée des privilèges.

Hiérarchie des privilèges:

  • SELECT
  • INSERT
  • ALTER
    • ALTER TABLE
      • ALTER UPDATE
      • ALTER DELETE
      • ALTER COLUMN
        • ALTER ADD COLUMN
        • ALTER DROP COLUMN
        • ALTER MODIFY COLUMN
        • ALTER COMMENT COLUMN
        • ALTER CLEAR COLUMN
        • ALTER RENAME COLUMN
      • ALTER INDEX
        • ALTER ORDER BY
        • ALTER ADD INDEX
        • ALTER DROP INDEX
        • ALTER MATERIALIZE INDEX
        • ALTER CLEAR INDEX
      • ALTER CONSTRAINT
        • ALTER ADD CONSTRAINT
        • ALTER DROP CONSTRAINT
      • ALTER TTL
      • ALTER MATERIALIZE TTL
      • ALTER SETTINGS
      • ALTER MOVE PARTITION
      • ALTER FETCH PARTITION
      • ALTER FREEZE PARTITION
    • ALTER VIEW
      • ALTER VIEW REFRESH
      • ALTER VIEW MODIFY QUERY
  • CREATE
    • CREATE DATABASE
    • CREATE TABLE
    • CREATE VIEW
    • CREATE DICTIONARY
    • CREATE TEMPORARY TABLE
  • DROP
    • DROP DATABASE
    • DROP TABLE
    • DROP VIEW
    • DROP DICTIONARY
  • TRUNCATE
  • OPTIMIZE
  • SHOW
    • SHOW DATABASES
    • SHOW TABLES
    • SHOW COLUMNS
    • SHOW DICTIONARIES
  • KILL QUERY
  • ACCESS MANAGEMENT
    • CREATE USER
    • ALTER USER
    • DROP USER
    • CREATE ROLE
    • ALTER ROLE
    • DROP ROLE
    • CREATE ROW POLICY
    • ALTER ROW POLICY
    • DROP ROW POLICY
    • CREATE QUOTA
    • ALTER QUOTA
    • DROP QUOTA
    • CREATE SETTINGS PROFILE
    • ALTER SETTINGS PROFILE
    • DROP SETTINGS PROFILE
    • SHOW ACCESS
      • SHOW_USERS
      • SHOW_ROLES
      • SHOW_ROW_POLICIES
      • SHOW_QUOTAS
      • SHOW_SETTINGS_PROFILES
    • ROLE ADMIN
  • SYSTEM
    • SYSTEM SHUTDOWN
    • SYSTEM DROP CACHE
      • SYSTEM DROP DNS CACHE
      • SYSTEM DROP MARK CACHE
      • SYSTEM DROP UNCOMPRESSED CACHE
    • SYSTEM RELOAD
      • SYSTEM RELOAD CONFIG
      • SYSTEM RELOAD DICTIONARY
      • SYSTEM RELOAD EMBEDDED DICTIONARIES
    • SYSTEM MERGES
    • SYSTEM TTL MERGES
    • SYSTEM FETCHES
    • SYSTEM MOVES
    • SYSTEM SENDS
      • SYSTEM DISTRIBUTED SENDS
      • SYSTEM REPLICATED SENDS
    • SYSTEM REPLICATION QUEUES
    • SYSTEM SYNC REPLICA
    • SYSTEM RESTART REPLICA
    • SYSTEM FLUSH
      • SYSTEM FLUSH DISTRIBUTED
      • SYSTEM FLUSH LOGS
  • INTROSPECTION
    • addressToLine
    • addressToSymbol
    • demangle
  • SOURCES
    • FILE
    • URL
    • REMOTE
    • YSQL
    • ODBC
    • JDBC
    • HDFS
    • S3
  • dictGet

Exemples de la façon dont cette hiérarchie est traitée:

  • Le ALTER privilège comprend tous les autres ALTER* privilège.
  • ALTER CONSTRAINT comprendre ALTER ADD CONSTRAINT et ALTER DROP CONSTRAINT privilège.

Les privilèges sont appliqués à différents niveaux. Connaissant un niveau suggère la syntaxe disponible pour le privilège.

Les niveaux (du plus faible au plus élevé):

  • COLUMN — Privilege can be granted for column, table, database, or globally.
  • TABLE — Privilege can be granted for table, database, or globally.
  • VIEW — Privilege can be granted for view, database, or globally.
  • DICTIONARY — Privilege can be granted for dictionary, database, or globally.
  • DATABASE — Privilege can be granted for database or globally.
  • GLOBAL — Privilege can be granted only globally.
  • GROUP — Groups privileges of different levels. When GROUP- le privilège de niveau est accordé, seuls les privilèges du groupe sont accordés qui correspondent à la syntaxe utilisée.

Exemples de syntaxe:

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

Exemples de syntaxe refusée:

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

Le privilège spécial ALL accorde tous les privilèges à un compte d'utilisateur ou à un rôle.

Par défaut, un compte d'utilisateur ou un rôle a pas de privilèges.

Si un utilisateur ou un rôle ont pas de privilèges qu'il s'affiche comme NONE privilège.

Certaines requêtes par leur implémentation nécessitent un ensemble de privilèges. Par exemple, pour effectuer la RENAME requête vous avez besoin des privilèges suivants: SELECT, CREATE TABLE, INSERT et DROP TABLE.

SELECT 

Permet d'effectuer des SELECT requête.

Le niveau de privilège: COLUMN.

Description

L'utilisateur accordé avec ce privilège peut effectuer SELECT requêtes sur une liste spécifiée de colonnes dans la table et la base de données spécifiées. Si l'utilisateur inclut d'autres colonnes, une requête ne renvoie aucune donnée.

Considérez le privilège suivant:

GRANT SELECT(x,y) ON db.table TO john

Ce privilège permet à john pour effectuer toute SELECT requête qui implique des données du x et/ou y les colonnes en db.table. Exemple, SELECT x FROM db.table. john ne pouvez pas effectuer de SELECT z FROM db.table. Le SELECT * FROM db.table aussi n'est pas disponible. En traitant cette requête, ClickHouse ne renvoie aucune donnée, même x et y. La seule exception est si une table contient uniquement x et y colonnes, dans ce cas ClickHouse renvoie toutes les données.

INSERT 

Permet d'effectuer des INSERT requête.

Le niveau de privilège: COLUMN.

Description

L'utilisateur accordé avec ce privilège peut effectuer INSERT requêtes sur une liste spécifiée de colonnes dans la table et la base de données spécifiées. Si l'utilisateur inclut d'autres colonnes, une requête n'insère aucune donnée.

Exemple

GRANT INSERT(x,y) ON db.table TO john

Le privilège accordé permet john pour insérer des données à l' x et/ou y les colonnes en db.table.

ALTER 

Permet d'effectuer des ALTER requêtes correspondant à la hiérarchie de privilèges suivante:

  • ALTER. Niveau: COLUMN.
    • ALTER TABLE. Niveau: GROUP
      • ALTER UPDATE. Niveau: COLUMN. Alias: UPDATE
      • ALTER DELETE. Niveau: COLUMN. Alias: DELETE
      • ALTER COLUMN. Niveau: GROUP
        • ALTER ADD COLUMN. Niveau: COLUMN. Alias: ADD COLUMN
        • ALTER DROP COLUMN. Niveau: COLUMN. Alias: DROP COLUMN
        • ALTER MODIFY COLUMN. Niveau: COLUMN. Alias: MODIFY COLUMN
        • ALTER COMMENT COLUMN. Niveau: COLUMN. Alias: COMMENT COLUMN
        • ALTER CLEAR COLUMN. Niveau: COLUMN. Alias: CLEAR COLUMN
        • ALTER RENAME COLUMN. Niveau: COLUMN. Alias: RENAME COLUMN
      • ALTER INDEX. Niveau: GROUP. Alias: INDEX
        • ALTER ORDER BY. Niveau: TABLE. Alias: ALTER MODIFY ORDER BY, MODIFY ORDER BY
        • ALTER ADD INDEX. Niveau: TABLE. Alias: ADD INDEX
        • ALTER DROP INDEX. Niveau: TABLE. Alias: DROP INDEX
        • ALTER MATERIALIZE INDEX. Niveau: TABLE. Alias: MATERIALIZE INDEX
        • ALTER CLEAR INDEX. Niveau: TABLE. Alias: CLEAR INDEX
      • ALTER CONSTRAINT. Niveau: GROUP. Alias: CONSTRAINT
        • ALTER ADD CONSTRAINT. Niveau: TABLE. Alias: ADD CONSTRAINT
        • ALTER DROP CONSTRAINT. Niveau: TABLE. Alias: DROP CONSTRAINT
      • ALTER TTL. Niveau: TABLE. Alias: ALTER MODIFY TTL, MODIFY TTL
      • ALTER MATERIALIZE TTL. Niveau: TABLE. Alias: MATERIALIZE TTL
      • ALTER SETTINGS. Niveau: TABLE. Alias: ALTER SETTING, ALTER MODIFY SETTING, MODIFY SETTING
      • ALTER MOVE PARTITION. Niveau: TABLE. Alias: ALTER MOVE PART, MOVE PARTITION, MOVE PART
      • ALTER FETCH PARTITION. Niveau: TABLE. Alias: FETCH PARTITION
      • ALTER FREEZE PARTITION. Niveau: TABLE. Alias: FREEZE PARTITION
    • ALTER VIEW Niveau: GROUP
      • ALTER VIEW REFRESH. Niveau: VIEW. Alias: ALTER LIVE VIEW REFRESH, REFRESH VIEW
      • ALTER VIEW MODIFY QUERY. Niveau: VIEW. Alias: ALTER TABLE MODIFY QUERY

Exemples de la façon dont cette hiérarchie est traitée:

  • Le ALTER privilège comprend tous les autres ALTER* privilège.
  • ALTER CONSTRAINT comprendre ALTER ADD CONSTRAINT et ALTER DROP CONSTRAINT privilège.

Note

  • Le MODIFY SETTING privilège permet de modifier les paramètres du moteur de table. In n'affecte pas les paramètres ou les paramètres de configuration du serveur.
  • Le ATTACH opération a besoin de la CREATE privilège.
  • Le DETACH opération a besoin de la DROP privilège.
  • Pour arrêter la mutation par le KILL MUTATION requête, vous devez avoir un privilège pour commencer cette mutation. Par exemple, si vous voulez arrêter l' ALTER UPDATE requête, vous avez besoin du ALTER UPDATE, ALTER TABLE, ou ALTER privilège.

CREATE 

Permet d'effectuer des CREATE et ATTACH DDL-requêtes correspondant à la hiérarchie de privilèges suivante:

  • CREATE. Niveau: GROUP
    • CREATE DATABASE. Niveau: DATABASE
    • CREATE TABLE. Niveau: TABLE
    • CREATE VIEW. Niveau: VIEW
    • CREATE DICTIONARY. Niveau: DICTIONARY
    • CREATE TEMPORARY TABLE. Niveau: GLOBAL

Note

  • Pour supprimer la table créée, l'utilisateur doit DROP.

DROP 

Permet d'effectuer des DROP et DETACH requêtes correspondant à la hiérarchie de privilèges suivante:

  • DROP. Niveau:
    • DROP DATABASE. Niveau: DATABASE
    • DROP TABLE. Niveau: TABLE
    • DROP VIEW. Niveau: VIEW
    • DROP DICTIONARY. Niveau: DICTIONARY

TRUNCATE 

Permet d'effectuer des TRUNCATE requête.

Le niveau de privilège: TABLE.

OPTIMIZE 

Permet d'effectuer les OPTIMIZE TABLE requête.

Le niveau de privilège: TABLE.

SHOW 

Permet d'effectuer des SHOW, DESCRIBE, USE, et EXISTS requêtes, correspondant à la hiérarchie suivante des privilèges:

  • SHOW. Niveau: GROUP
    • SHOW DATABASES. Niveau: DATABASE. Permet d'exécuter des SHOW DATABASES, SHOW CREATE DATABASE, USE <database> requête.
    • SHOW TABLES. Niveau: TABLE. Permet d'exécuter des SHOW TABLES, EXISTS <table>, CHECK <table> requête.
    • SHOW COLUMNS. Niveau: COLUMN. Permet d'exécuter des SHOW CREATE TABLE, DESCRIBE requête.
    • SHOW DICTIONARIES. Niveau: DICTIONARY. Permet d'exécuter des SHOW DICTIONARIES, SHOW CREATE DICTIONARY, EXISTS <dictionary> requête.

Note

Un utilisateur a le SHOW privilège s'il a un autre privilège concernant la table, le dictionnaire ou la base de données spécifiés.

KILL QUERY 

Permet d'effectuer les KILL requêtes correspondant à la hiérarchie de privilèges suivante:

Le niveau de privilège: GLOBAL.

Note

KILL QUERY privilège permet à un utilisateur de tuer les requêtes des autres utilisateurs.

ACCESS MANAGEMENT 

Permet à un utilisateur d'effectuer des requêtes qui gèrent les utilisateurs, les rôles et les stratégies de ligne.

  • ACCESS MANAGEMENT. Niveau: GROUP
    • CREATE USER. Niveau: GLOBAL
    • ALTER USER. Niveau: GLOBAL
    • DROP USER. Niveau: GLOBAL
    • CREATE ROLE. Niveau: GLOBAL
    • ALTER ROLE. Niveau: GLOBAL
    • DROP ROLE. Niveau: GLOBAL
    • ROLE ADMIN. Niveau: GLOBAL
    • CREATE ROW POLICY. Niveau: GLOBAL. Alias: CREATE POLICY
    • ALTER ROW POLICY. Niveau: GLOBAL. Alias: ALTER POLICY
    • DROP ROW POLICY. Niveau: GLOBAL. Alias: DROP POLICY
    • CREATE QUOTA. Niveau: GLOBAL
    • ALTER QUOTA. Niveau: GLOBAL
    • DROP QUOTA. Niveau: GLOBAL
    • CREATE SETTINGS PROFILE. Niveau: GLOBAL. Alias: CREATE PROFILE
    • ALTER SETTINGS PROFILE. Niveau: GLOBAL. Alias: ALTER PROFILE
    • DROP SETTINGS PROFILE. Niveau: GLOBAL. Alias: DROP PROFILE
    • SHOW ACCESS. Niveau: GROUP
      • SHOW_USERS. Niveau: GLOBAL. Alias: SHOW CREATE USER
      • SHOW_ROLES. Niveau: GLOBAL. Alias: SHOW CREATE ROLE
      • SHOW_ROW_POLICIES. Niveau: GLOBAL. Alias: SHOW POLICIES, SHOW CREATE ROW POLICY, SHOW CREATE POLICY
      • SHOW_QUOTAS. Niveau: GLOBAL. Alias: SHOW CREATE QUOTA
      • SHOW_SETTINGS_PROFILES. Niveau: GLOBAL. Alias: SHOW PROFILES, SHOW CREATE SETTINGS PROFILE, SHOW CREATE PROFILE

Le ROLE ADMIN le privilège permet à un utilisateur d'accorder et de révoquer tous les rôles, y compris ceux qui ne lui sont pas accordés avec l'option admin.

SYSTEM 

Permet à un utilisateur d'effectuer la SYSTEM requêtes correspondant à la hiérarchie de privilèges suivante.

  • SYSTEM. Niveau: GROUP
    • SYSTEM SHUTDOWN. Niveau: GLOBAL. Alias: SYSTEM KILL, SHUTDOWN
    • SYSTEM DROP CACHE. Alias: DROP CACHE
      • SYSTEM DROP DNS CACHE. Niveau: GLOBAL. Alias: SYSTEM DROP DNS, DROP DNS CACHE, DROP DNS
      • SYSTEM DROP MARK CACHE. Niveau: GLOBAL. Alias: SYSTEM DROP MARK, DROP MARK CACHE, DROP MARKS
      • SYSTEM DROP UNCOMPRESSED CACHE. Niveau: GLOBAL. Alias: SYSTEM DROP UNCOMPRESSED, DROP UNCOMPRESSED CACHE, DROP UNCOMPRESSED
    • SYSTEM RELOAD. Niveau: GROUP
      • SYSTEM RELOAD CONFIG. Niveau: GLOBAL. Alias: RELOAD CONFIG
      • SYSTEM RELOAD DICTIONARY. Niveau: GLOBAL. Alias: SYSTEM RELOAD DICTIONARIES, RELOAD DICTIONARY, RELOAD DICTIONARIES
      • SYSTEM RELOAD EMBEDDED DICTIONARIES. Niveau: GLOBAL. Alias: RELOAD EMBEDDED DICTIONARIES
    • SYSTEM MERGES. Niveau: TABLE. Alias: SYSTEM STOP MERGES, SYSTEM START MERGES, STOP MERGES, START MERGES
    • SYSTEM TTL MERGES. Niveau: TABLE. Alias: SYSTEM STOP TTL MERGES, SYSTEM START TTL MERGES, STOP TTL MERGES, START TTL MERGES
    • SYSTEM FETCHES. Niveau: TABLE. Alias: SYSTEM STOP FETCHES, SYSTEM START FETCHES, STOP FETCHES, START FETCHES
    • SYSTEM MOVES. Niveau: TABLE. Alias: SYSTEM STOP MOVES, SYSTEM START MOVES, STOP MOVES, START MOVES
    • SYSTEM SENDS. Niveau: GROUP. Alias: SYSTEM STOP SENDS, SYSTEM START SENDS, STOP SENDS, START SENDS
      • SYSTEM DISTRIBUTED SENDS. Niveau: TABLE. Alias: SYSTEM STOP DISTRIBUTED SENDS, SYSTEM START DISTRIBUTED SENDS, STOP DISTRIBUTED SENDS, START DISTRIBUTED SENDS
      • SYSTEM REPLICATED SENDS. Niveau: TABLE. Alias: SYSTEM STOP REPLICATED SENDS, SYSTEM START REPLICATED SENDS, STOP REPLICATED SENDS, START REPLICATED SENDS
    • SYSTEM REPLICATION QUEUES. Niveau: TABLE. Alias: SYSTEM STOP REPLICATION QUEUES, SYSTEM START REPLICATION QUEUES, STOP REPLICATION QUEUES, START REPLICATION QUEUES
    • SYSTEM SYNC REPLICA. Niveau: TABLE. Alias: SYNC REPLICA
    • SYSTEM RESTART REPLICA. Niveau: TABLE. Alias: RESTART REPLICA
    • SYSTEM FLUSH. Niveau: GROUP
      • SYSTEM FLUSH DISTRIBUTED. Niveau: TABLE. Alias: FLUSH DISTRIBUTED
      • SYSTEM FLUSH LOGS. Niveau: GLOBAL. Alias: FLUSH LOGS

Le SYSTEM RELOAD EMBEDDED DICTIONARIES privilège implicitement accordé par le SYSTEM RELOAD DICTIONARY ON *.* privilège.

INTROSPECTION 

Permet l'utilisation de introspection fonction.

  • INTROSPECTION. Niveau: GROUP. Alias: INTROSPECTION FUNCTIONS
    • addressToLine. Niveau: GLOBAL
    • addressToSymbol. Niveau: GLOBAL
    • demangle. Niveau: GLOBAL

SOURCES 

Permet d'utiliser des sources de données externes. S'applique à moteurs de table et les fonctions de table.

  • SOURCES. Niveau: GROUP
    • FILE. Niveau: GLOBAL
    • URL. Niveau: GLOBAL
    • REMOTE. Niveau: GLOBAL
    • YSQL. Niveau: GLOBAL
    • ODBC. Niveau: GLOBAL
    • JDBC. Niveau: GLOBAL
    • HDFS. Niveau: GLOBAL
    • S3. Niveau: GLOBAL

Le SOURCES privilège permet l'utilisation de toutes les sources. Vous pouvez également accorder un privilège pour chaque source individuellement. Pour utiliser les sources, vous avez besoin de privilèges supplémentaires.

Exemple:

  • Pour créer une table avec Moteur de table MySQL, vous avez besoin CREATE TABLE (ON db.table_name) et MYSQL privilège.
  • L'utilisation de la fonction de table mysql, vous avez besoin CREATE TEMPORARY TABLE et MYSQL privilège.

dictGet 

  • dictGet. Alias: dictHas, dictGetHierarchy, dictIsIn

Permet à un utilisateur d'exécuter dictGet, dictHas, dictGetHierarchy, dictisine fonction.

Niveau de privilège: DICTIONARY.

Exemple

  • GRANT dictGet ON mydb.mydictionary TO john
  • GRANT dictGet ON mydictionary TO john

ALL 

Les subventions de tous les privilèges sur l'entité réglementée à un compte d'utilisateur ou un rôle.

NONE 

N'accorde pas de privilèges.

ADMIN OPTION 

Le ADMIN OPTION le privilège permet à un utilisateur d'accorder son rôle à un autre utilisateur.

Évaluation: 4.3 - 3 vote

Ce contenu a été utile?
★★★★☆