- Accorde des privilèges aux comptes utilisateur ClickHouse ou aux rôles.
- Assigne des rôles aux comptes utilisateur ou à d’autres rôles.
Syntaxe d’octroi de privilèges
privilege— Type de privilège.role— Rôle utilisateur ClickHouse.user— Compte utilisateur ClickHouse.
WITH GRANT OPTION accorde à user ou role l’autorisation d’exécuter la requête GRANT. Les utilisateurs peuvent accorder des privilèges de même portée que ceux dont ils disposent, ou de portée inférieure.
La clause WITH REPLACE OPTION remplace les anciens privilèges par les nouveaux pour user ou role ; si elle n’est pas spécifiée, elle ajoute les privilèges.
Syntaxe d’attribution d’un rôle
role— rôle utilisateur ClickHouse.user— compte utilisateur ClickHouse.
WITH ADMIN OPTION accorde le privilège ADMIN OPTION à user ou à role.
La clause WITH REPLACE OPTION remplace les anciens rôles par les nouveaux pour user ou role ; si elle n’est pas spécifiée, les rôles sont ajoutés.
Syntaxe de GRANT CURRENT GRANTS
privilege— Type de privilège.role— Rôle utilisateur ClickHouse.user— Compte utilisateur ClickHouse.
CURRENT GRANTS permet d’accorder tous les privilèges spécifiés à l’utilisateur ou au rôle indiqué.
Si aucun privilège n’est spécifié, l’utilisateur ou le rôle indiqué recevra alors tous les privilèges disponibles pour CURRENT_USER.
Utilisation
GRANT, votre compte doit disposer du privilège GRANT OPTION. Vous ne pouvez accorder des privilèges que dans la limite de ceux dont dispose votre compte.
Par exemple, un administrateur a accordé des privilèges au compte john à l’aide de la requête suivante :
john a l’autorisation d’exécuter :
SELECT x,y FROM db.table.SELECT x FROM db.table.SELECT y FROM db.table.
john ne peut pas exécuter SELECT z FROM db.table. SELECT * FROM db.table n’est pas non plus autorisé. Lors du traitement de cette requête, ClickHouse ne renvoie aucune donnée, pas même x et y. La seule exception est lorsqu’une table contient uniquement les colonnes x et y. Dans ce cas, ClickHouse renvoie toutes les données.
De plus, john possède le privilège GRANT OPTION ; il peut donc accorder à d’autres utilisateurs des privilèges de portée identique ou plus restreinte.
L’accès à la base de données system est toujours autorisé (puisque cette base de données est utilisée pour le traitement des requêtes).
Bien qu’il existe de nombreuses tables système auxquelles les nouveaux utilisateurs peuvent accéder par défaut, ils peuvent ne pas pouvoir accéder à toutes les tables système par défaut sans privilèges supplémentaires.
De plus, l’accès à certaines tables système telles que
system.zookeeper est restreint pour les utilisateurs de Cloud pour des raisons de sécurité.GRANT SELECT, INSERT ON *.* TO john, robin autorise les comptes john et robin à exécuter les requêtes INSERT et SELECT sur toutes les tables de toutes les bases de données du serveur.
Privilèges avec caractères génériques
*) à la place d’un nom de table ou de base de données. Par exemple, la requête GRANT SELECT ON db.* TO john permet à john d’exécuter la requête SELECT sur toutes les tables de la base de données db.
Vous pouvez également omettre le nom de la base de données. Dans ce cas, les privilèges sont accordés pour la base de données active.
Par exemple, GRANT SELECT ON * TO john accorde le privilège sur toutes les tables de la base de données active, GRANT SELECT ON mytable TO john accorde le privilège sur la table mytable dans la base de données active.
La fonctionnalité décrite ci-dessous est disponible à partir de ClickHouse 24.10.
GRANT SELECT ON db.my_tables* TO john. Cette requête permet à john d’exécuter la requête SELECT sur toutes les tables de la base de données db dont le préfixe est my_tables*.
Autres exemples :
GRANT SELECT ON db.my_tables* TO john
GRANT SELECT ON db*.* TO john
GRANT SELECT ON db.* TO john, puis créez une nouvelle table db.new_table, l’utilisateur john pourra exécuter la requête SELECT * FROM db.new_table.
Vous ne pouvez spécifier un astérisque que pour les préfixes :
Privilèges
ALLGESTION DES ACCÈSALLOW 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 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 CACHESSOURCESAZUREFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
SYSTEMSYSTEM 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 PRIMARY INDEX CACHESYSTEM DROP REPLICASYSTEM FAILPOINTSYSTEM FETCHESSYSTEM FLUSHSYSTEM FLUSH ASYNC INSERT QUEUESYSTEM FLUSH LOGS
SYSTEM JEMALLOCSYSTEM KILL QUERYSYSTEM KILL TRANSACTIONSYSTEM LISTENSYSTEM LOAD PRIMARY KEYSYSTEM MERGESSYSTEM MOVESSYSTEM PULLING REPLICATION LOGSYSTEM REDUCE BLOCKING PARTSSYSTEM REPLICATION QUEUESSYSTEM REPLICA READINESSSYSTEM 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 VIEWSSYSTEM VIRTUAL PARTS UPDATESYSTEM WAIT LOADING PARTS
TABLE ENGINETRUNCATEUNDROP TABLE
NONE
- Le privilège
ALTERinclut tous les autres privilègesALTER*. ALTER CONSTRAINTinclut les privilègesALTER ADD CONSTRAINTetALTER DROP CONSTRAINT.
COLUMN— Le privilège peut être accordé pour une colonne, une table, une base de données ou globalement.TABLE— Le privilège peut être accordé pour une table, une base de données ou globalement.VIEW— Le privilège peut être accordé pour une vue, une base de données ou globalement.DICTIONARY— Le privilège peut être accordé pour un dictionnaire, une base de données ou globalement.DATABASE— Le privilège peut être accordé pour une base de données ou globalement.GLOBAL— Le privilège peut être accordé uniquement globalement.GROUP— Regroupe des privilèges de différents niveaux. Lorsqu’un privilège de niveauGROUPest accordé, seuls les privilèges du groupe correspondant à la syntaxe utilisée sont accordés.
GRANT SELECT(x) ON db.table TO userGRANT SELECT ON db.* TO user
GRANT CREATE USER(x) ON db.table TO userGRANT CREATE USER ON db.* TO user
SELECT, CREATE TABLE, INSERT et DROP TABLE.
SELECT
COLUMN.
Description
L’utilisateur auquel ce privilège est accordé peut exécuter des requêtes SELECT sur une liste donnée de colonnes dans la table et la base de données spécifiées. Si l’utilisateur inclut des colonnes autres que celles spécifiées, la requête ne renvoie aucune donnée.
Considérez le privilège suivant :
john d’exécuter toute requête SELECT portant sur des données provenant des colonnes x et/ou y de db.table, par exemple SELECT x FROM db.table. john ne peut pas exécuter SELECT z FROM db.table. SELECT * FROM db.table n’est pas non plus autorisé. Lors du traitement de cette requête, ClickHouse ne renvoie aucune donnée, pas même x et y. La seule exception est le cas où une table ne contient que les colonnes x et y ; dans ce cas, ClickHouse renvoie toutes les données.
INSERT
COLUMN.
Description
L’utilisateur disposant de ce privilège peut exécuter des requêtes INSERT sur une liste donnée de colonnes dans la table et la base de données spécifiées. Si l’utilisateur inclut d’autres colonnes que celles spécifiées, la requête n’insère aucune donnée.
Exemple
john d’insérer des données dans les colonnes x et/ou y de db.table.
ALTER
ALTER. Niveau :COLUMN.ALTER TABLE. Niveau :GROUPALTER UPDATE. Niveau :COLUMN. Alias :UPDATEALTER DELETE. Niveau :COLUMN. Alias :DELETEALTER COLUMN. Niveau :GROUPALTER ADD COLUMN. Niveau :COLUMN. Alias :ADD COLUMNALTER DROP COLUMN. Niveau :COLUMN. Alias :DROP COLUMNALTER MODIFY COLUMN. Niveau :COLUMN. Alias :MODIFY COLUMNALTER COMMENT COLUMN. Niveau :COLUMN. Alias :COMMENT COLUMNALTER CLEAR COLUMN. Niveau :COLUMN. Alias :CLEAR COLUMNALTER RENAME COLUMN. Niveau :COLUMN. Alias :RENAME COLUMNALTER INDEX. Niveau :GROUP. Alias :INDEXALTER ORDER BY. Niveau :TABLE. Alias :ALTER MODIFY ORDER BY,MODIFY ORDER BYALTER SAMPLE BY. Niveau :TABLE. Alias :ALTER MODIFY SAMPLE BY,MODIFY SAMPLE BYALTER ADD INDEX. Niveau :TABLE. Alias :ADD INDEXALTER DROP INDEX. Niveau :TABLE. Alias :DROP INDEXALTER MATERIALIZE INDEX. Niveau :TABLE. Alias :MATERIALIZE INDEXALTER CLEAR INDEX. Niveau :TABLE. Alias :CLEAR INDEXALTER CONSTRAINT. Niveau :GROUP. Alias :CONSTRAINTALTER ADD CONSTRAINT. Niveau :TABLE. Alias :ADD CONSTRAINTALTER DROP CONSTRAINT. Niveau :TABLE. Alias :DROP CONSTRAINTALTER TTL. Niveau :TABLE. Alias :ALTER MODIFY TTL,MODIFY TTLALTER MATERIALIZE TTL. Niveau :TABLE. Alias :MATERIALIZE TTLALTER SETTINGS. Niveau :TABLE. Alias :ALTER SETTING,ALTER MODIFY SETTING,MODIFY SETTINGALTER MOVE PARTITION. Niveau :TABLE. Alias :ALTER MOVE PART,MOVE PARTITION,MOVE PARTALTER FETCH PARTITION. Niveau :TABLE. Alias :ALTER FETCH PART,FETCH PARTITION,FETCH PARTALTER FREEZE PARTITION. Niveau :TABLE. Alias :FREEZE PARTITIONALTER EXECUTE. Niveau :TABLE. Alias :ALTER TABLE EXECUTEALTER VIEW. Niveau :GROUPALTER VIEW REFRESH. Niveau :VIEW. Alias :REFRESH VIEWALTER VIEW MODIFY QUERY. Niveau :VIEW. Alias :ALTER TABLE MODIFY QUERYALTER VIEW MODIFY SQL SECURITY. Niveau :VIEW. Alias :ALTER TABLE MODIFY SQL SECURITY
- Le privilège
ALTERinclut tous les autres privilègesALTER*. ALTER CONSTRAINTinclut les privilègesALTER ADD CONSTRAINTetALTER DROP CONSTRAINT.
- Le privilège
MODIFY SETTINGpermet de modifier les paramètres du moteur de table. Il n’affecte ni les settings ni les paramètres de configuration du serveur. - L’opération
ATTACHnécessite le privilège CREATE. - L’opération
DETACHnécessite le privilège DROP. - Pour arrêter une mutation avec la requête KILL MUTATION, vous devez disposer d’un privilège permettant de lancer cette mutation. Par exemple, si vous voulez arrêter la requête
ALTER UPDATE, vous avez besoin du privilègeALTER UPDATE,ALTER TABLEouALTER.
BACKUP
BACKUP] dans des requêtes. Pour plus d’informations sur les sauvegardes, consultez “Sauvegarde et restauration”.
CREATE
CREATE. Niveau :GROUPCREATE DATABASE. Niveau :DATABASECREATE TABLE. Niveau :TABLECREATE ARBITRARY TEMPORARY TABLE. Niveau :GLOBALCREATE TEMPORARY TABLE. Niveau :GLOBAL
CREATE VIEW. Niveau :VIEWCREATE DICTIONARY. Niveau :DICTIONARY
- Pour supprimer la table créée, l’utilisateur doit disposer de DROP.
CLUSTER
ON CLUSTER.
Syntax
ON CLUSTER requièrent que l’utilisateur dispose de l’autorisation CLUSTER.
Vous obtiendrez l’erreur suivante si vous essayez d’utiliser ON CLUSTER dans une requête sans avoir au préalable octroyé l’autorisation CLUSTER :
on_cluster_queries_require_cluster_grant,
situé dans la section access_control_improvements de config.xml (voir ci-dessous), à false.
config.xml
DROP
DROP. Niveau :GROUPDROP DATABASE. Niveau :DATABASEDROP TABLE. Niveau :TABLEDROP VIEW. Niveau :VIEWDROP DICTIONARY. Niveau :DICTIONARY
TRUNCATE
TABLE.
OPTIMIZE
TABLE.
SHOW
SHOW, DESCRIBE, USE et EXISTS selon la hiérarchie de privilèges suivante :
SHOW. Niveau :GROUPSHOW DATABASES. Niveau :DATABASE. Permet d’exécuter les requêtesSHOW DATABASES,SHOW CREATE DATABASE,USE <database>.SHOW TABLES. Niveau :TABLE. Permet d’exécuter les requêtesSHOW TABLES,EXISTS <table>,CHECK <table>.SHOW COLUMNS. Niveau :COLUMN. Permet d’exécuter les requêtesSHOW CREATE TABLE,DESCRIBE.SHOW DICTIONARIES. Niveau :DICTIONARY. Permet d’exécuter les requêtesSHOW DICTIONARIES,SHOW CREATE DICTIONARY,EXISTS <dictionary>.
SHOW s’il possède au moins un autre privilège concernant la table, le dictionnaire ou la base de données en question.
KILL QUERY
GLOBAL.
Notes
Le privilège KILL QUERY permet à un utilisateur d’interrompre les requêtes d’autres utilisateurs.
GESTION DES ACCÈS
ACCESS MANAGEMENT. Niveau :GROUPCREATE USER. Niveau :GLOBALALTER USER. Niveau :GLOBALDROP USER. Niveau :GLOBALCREATE ROLE. Niveau :GLOBALALTER ROLE. Niveau :GLOBALDROP ROLE. Niveau :GLOBALROLE ADMIN. Niveau :GLOBALCREATE ROW POLICY. Niveau :GLOBAL. Alias :CREATE POLICYALTER ROW POLICY. Niveau :GLOBAL. Alias :ALTER POLICYDROP ROW POLICY. Niveau :GLOBAL. Alias :DROP POLICYCREATE QUOTA. Niveau :GLOBALALTER QUOTA. Niveau :GLOBALDROP QUOTA. Niveau :GLOBALCREATE SETTINGS PROFILE. Niveau :GLOBAL. Alias :CREATE PROFILEALTER SETTINGS PROFILE. Niveau :GLOBAL. Alias :ALTER PROFILEDROP SETTINGS PROFILE. Niveau :GLOBAL. Alias :DROP PROFILESHOW ACCESS. Niveau :GROUPSHOW_USERS. Niveau :GLOBAL. Alias :SHOW CREATE USERSHOW_ROLES. Niveau :GLOBAL. Alias :SHOW CREATE ROLESHOW_ROW_POLICIES. Niveau :GLOBAL. Alias :SHOW POLICIES,SHOW CREATE ROW POLICY,SHOW CREATE POLICYSHOW_QUOTAS. Niveau :GLOBAL. Alias :SHOW CREATE QUOTASHOW_SETTINGS_PROFILES. Niveau :GLOBAL. Alias :SHOW PROFILES,SHOW CREATE SETTINGS PROFILE,SHOW CREATE PROFILE
ALLOW SQL SECURITY NONE. Niveau :GLOBAL. Alias :CREATE SQL SECURITY NONE,SQL SECURITY NONE,SECURITY NONE
ROLE ADMIN permet à un utilisateur d’attribuer et de révoquer tous les rôles, y compris ceux qui ne lui ont pas été attribués avec l’option admin.
SYSTEM
SYSTEM. Niveau :GROUPSYSTEM SHUTDOWN. Niveau :GLOBAL. Alias :SYSTEM KILL,SHUTDOWNSYSTEM DROP CACHE. Alias :DROP CACHESYSTEM DROP DNS CACHE. Niveau :GLOBAL. Alias :SYSTEM CLEAR DNS CACHE,SYSTEM DROP DNS,DROP DNS CACHE,DROP DNSSYSTEM DROP MARK CACHE. Niveau :GLOBAL. Alias :SYSTEM CLEAR MARK CACHE,SYSTEM DROP MARK,DROP MARK CACHE,DROP MARKSSYSTEM DROP UNCOMPRESSED CACHE. Niveau :GLOBAL. Alias :SYSTEM CLEAR UNCOMPRESSED CACHE,SYSTEM DROP UNCOMPRESSED,DROP UNCOMPRESSED CACHE,DROP UNCOMPRESSED
SYSTEM RELOAD. Niveau :GROUPSYSTEM RELOAD CONFIG. Niveau :GLOBAL. Alias :RELOAD CONFIGSYSTEM RELOAD DICTIONARY. Niveau :GLOBAL. Alias :SYSTEM RELOAD DICTIONARIES,RELOAD DICTIONARY,RELOAD DICTIONARIESSYSTEM RELOAD EMBEDDED DICTIONARIES. Niveau :GLOBAL. Alias :RELOAD EMBEDDED DICTIONARIES
SYSTEM MERGES. Niveau :TABLE. Alias :SYSTEM STOP MERGES,SYSTEM START MERGES,STOP MERGES,START MERGESSYSTEM TTL MERGES. Niveau :TABLE. Alias :SYSTEM STOP TTL MERGES,SYSTEM START TTL MERGES,STOP TTL MERGES,START TTL MERGESSYSTEM FETCHES. Niveau :TABLE. Alias :SYSTEM STOP FETCHES,SYSTEM START FETCHES,STOP FETCHES,START FETCHESSYSTEM MOVES. Niveau :TABLE. Alias :SYSTEM STOP MOVES,SYSTEM START MOVES,STOP MOVES,START MOVESSYSTEM SENDS. Niveau :GROUP. Alias :SYSTEM STOP SENDS,SYSTEM START SENDS,STOP SENDS,START SENDSSYSTEM DISTRIBUTED SENDS. Niveau :TABLE. Alias :SYSTEM STOP DISTRIBUTED SENDS,SYSTEM START DISTRIBUTED SENDS,STOP DISTRIBUTED SENDS,START DISTRIBUTED SENDSSYSTEM 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 QUEUESSYSTEM SYNC REPLICA. Niveau :TABLE. Alias :SYNC REPLICASYSTEM RESTART REPLICA. Niveau :TABLE. Alias :RESTART REPLICASYSTEM FLUSH. Niveau :GROUPSYSTEM FLUSH DISTRIBUTED. Niveau :TABLE. Alias :FLUSH DISTRIBUTEDSYSTEM FLUSH LOGS. Niveau :GLOBAL. Alias :FLUSH LOGS
SYSTEM RELOAD EMBEDDED DICTIONARIES est implicitement accordé par le privilège SYSTEM RELOAD DICTIONARY ON *.*.
INTROSPECTION
INTROSPECTION. Niveau :GROUP. Alias :INTROSPECTION FUNCTIONSaddressToLine. Niveau :GLOBALaddressToLineWithInlines. Niveau :GLOBALaddressToSymbol. Niveau :GLOBALdemangle. Niveau :GLOBAL
SOURCES
READ. Niveau :GLOBAL_WITH_PARAMETERWRITE. Niveau :GLOBAL_WITH_PARAMETER
AZUREFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
La distinction entre les privilèges READ et WRITE pour les sources est disponible à partir de la version 25.7, et uniquement avec le paramètre du serveur
access_control_improvements.enable_read_write_grantsSinon, vous devez utiliser la syntaxe GRANT AZURE ON *.* TO user, qui équivaut au nouveau GRANT READ, WRITE ON AZURE TO user- Pour créer une table avec le moteur de table MySQL, vous devez disposer de
CREATE TABLE (ON db.table_name)et des privilègesMYSQL. - Pour utiliser la fonction de table mysql, vous devez disposer de
CREATE TEMPORARY TABLEet des privilègesMYSQL.
Privilèges de filtrage des sources
Cette fonctionnalité est disponible à partir de la version 25.8 et uniquement avec le paramètre serveur
access_control_improvements.enable_read_write_grantsWITH GRANT OPTION, il peut être réattribué à l’aide de GRANT CURRENT GRANTS :
- Les révocations partielles ne sont pas autorisées : vous ne pouvez pas révoquer une partie d’un filtre déjà accordé. Vous devez révoquer l’autorisation dans son intégralité, puis l’accorder de nouveau avec de nouveaux motifs si nécessaire.
- Les autorisations avec caractères génériques ne sont pas autorisées : vous ne pouvez pas utiliser
GRANT READ ON *('regexp')ni d’autres motifs composés uniquement de caractères génériques. Vous devez fournir une source spécifique.
dictGet
dictGet. Alias :dictHas,dictGetHierarchy,dictIsIn
DICTIONARY.
Exemples
GRANT dictGet ON mydb.mydictionary TO johnGRANT dictGet ON mydictionary TO john
displaySecretsInShowAndSelect
SHOW et SELECT si les deux paramètres suivants sont activés :
paramètre du serveur display_secrets_in_show_and_select
et
paramètre de format format_display_secrets_in_show_and_select.
NAMED COLLECTION ADMIN
NAMED COLLECTION ADMIN. Niveau :NAMED_COLLECTION. Alias :NAMED COLLECTION CONTROLCREATE NAMED COLLECTION. Niveau :NAMED_COLLECTIONDROP NAMED COLLECTION. Niveau :NAMED_COLLECTIONALTER NAMED COLLECTION. Niveau :NAMED_COLLECTIONSHOW NAMED COLLECTIONS. Niveau :NAMED_COLLECTION. Alias :SHOW NAMED COLLECTIONSSHOW NAMED COLLECTIONS SECRETS. Niveau :NAMED_COLLECTION. Alias :SHOW NAMED COLLECTIONS SECRETSNAMED COLLECTION. Niveau :NAMED_COLLECTION. Alias :NAMED COLLECTION USAGE, USE NAMED COLLECTION
GRANT CREATE NAMED COLLECTION ON abc TO john
MOTEUR DE TABLE
GRANT TABLE ENGINE ON * TO johnGRANT TABLE ENGINE ON TinyLog TO john
Par défaut, pour des raisons de compatibilité descendante, la création d’une table avec un moteur de table spécifique ignore les autorisations,
mais vous pouvez modifier ce comportement en définissant
table_engines_require_grant sur true
dans config.xml.READ/WRITE sur la source correspondante. Voir Sources.
Par exemple, pour le moteur de table AzureBlobStorage, l’autorisation suivante peut être requise.
GRANT READ, WRITE ON AZURE TO john
ALL
Le privilège
ALL n’est pas pris en charge dans ClickHouse Cloud, où l’utilisateur default dispose d’autorisations limitées. Les utilisateurs peuvent accorder à un utilisateur les autorisations maximales en lui attribuant default_role. Voir ici pour plus de détails.
Les utilisateurs peuvent également utiliser GRANT CURRENT GRANTS avec l’utilisateur default pour obtenir un effet similaire à ALL.NONE
ADMIN OPTION
ADMIN OPTION permet à un utilisateur d’accorder son rôle à un autre utilisateur.