- 権限を ClickHouse のユーザーアカウントまたはロールに付与します。
- ロールをユーザーアカウントまたは他のロールに割り当てます。
権限を取り消すには、REVOKEステートメントを使用します。付与されている権限は、SHOW GRANTSステートメントで確認できます。
権限付与の構文
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— 権限の種類。role— ClickHouse のユーザーロール。user— ClickHouse のユーザーアカウント。
WITH GRANT OPTION 句は、user または role に GRANT クエリを実行する権限を付与します。ユーザーは、自身が持つ権限と同じスコープ、またはそれより狭いスコープの権限を付与できます。
WITH REPLACE OPTION 句は、user または role に対する既存の権限を新しい権限で置き換えます。これが指定されていない場合は、権限が追加されます。
ロールの割り当て構文
GRANT [ON CLUSTER cluster_name] role [,...] TO {user | another_role | CURRENT_USER} [,...] [WITH ADMIN OPTION] [WITH REPLACE OPTION]role— ClickHouse のユーザーロール。user— ClickHouse のユーザーアカウント。
WITH ADMIN OPTION 句は、user または role に ADMIN OPTION 権限を付与します。
WITH REPLACE OPTION 句は、user または role の既存のロールを新しいロールで置き換えます。指定しない場合は、ロールが追加されます。
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— 権限の種類。role— ClickHouse のユーザーロール。user— ClickHouse のユーザーアカウント。
CURRENT GRANTS ステートメントを使用すると、指定したすべての権限を、指定したユーザーまたはロールに付与できます。
権限が何も指定されていない場合は、指定したユーザーまたはロールに CURRENT_USER で利用可能なすべての権限が付与されます。
使用方法
GRANT を使用するには、アカウントに GRANT OPTION 権限が必要です。権限を付与できるのは、自身のアカウントに与えられている権限の範囲内に限られます。
たとえば、管理者は次のクエリで john アカウントに権限を付与しています。
GRANT SELECT(x,y) ON db.table TO john WITH GRANT OPTIONこれは、john に次の実行権限があることを意味します。
SELECT x,y FROM db.table.SELECT x FROM db.table.SELECT y FROM db.table.
john は SELECT z FROM db.table を実行できません。SELECT * FROM db.table も実行できません。このクエリを処理する場合、ClickHouse は x と y についてもデータを一切返しません。唯一の例外は、テーブルに x と y のカラムしかない場合です。この場合、ClickHouse はすべてのデータを返します。
また、john は GRANT OPTION 権限も持っているため、同じスコープまたはそれより狭いスコープの権限を他のユーザーに付与できます。
system データベースへのアクセスは常に許可されます (このデータベースはクエリの処理に使用されるためです) 。
1 つのクエリで、複数のアカウントに複数の権限を付与できます。クエリ GRANT SELECT, INSERT ON *.* TO john, robin を使用すると、アカウント john と robin は、サーバー上のすべてのデータベース内のすべてのテーブルに対して INSERT クエリと SELECT クエリを実行できます。
ワイルドカードを使った権限付与
権限を指定する際は、テーブル名やデータベース名の代わりにアスタリスク (*) を使用できます。たとえば、GRANT SELECT ON db.* TO john クエリでは、john に db データベース内のすべてのテーブルに対する SELECT クエリの実行を許可します。
また、データベース名を省略することもできます。この場合、権限は現在のデータベースに対して付与されます。
たとえば、GRANT SELECT ON * TO john は現在のデータベース内のすべてのテーブルに対する権限を付与し、GRANT SELECT ON mytable TO john は現在のデータベース内の mytable テーブルに対する権限を付与します。
テーブル名またはデータベース名の末尾にアスタリスクを付けることもできます。この機能を使うと、テーブルのパスのプレフィックスを指定して権限を付与できます。
例: GRANT SELECT ON db.my_tables* TO john。このクエリでは、john に db データベース内で my_tables をプレフィックスに持つすべてのテーブルに対する SELECT クエリの実行を許可します。
さらに例を示します。
GRANT SELECT ON db.my_tables* TO john
SELECT * FROM db.my_tables -- 許可済み
SELECT * FROM db.my_tables_0 -- 許可済み
SELECT * FROM db.my_tables_1 -- 許可済み
SELECT * FROM db.other_table -- 未許可
SELECT * FROM db2.my_tables -- 未許可GRANT SELECT ON db*.* TO john
SELECT * FROM db.my_tables -- 許可済み
SELECT * FROM db.my_tables_0 -- 許可済み
SELECT * FROM db.my_tables_1 -- 許可済み
SELECT * FROM db.other_table -- 許可済み
SELECT * FROM db2.my_tables -- 許可済み付与されたパス内で新たに作成されたすべてのテーブルは、自動的に親からすべての権限を継承します。
たとえば、GRANT SELECT ON db.* TO john クエリを実行した後に新しいテーブル db.new_table を作成すると、ユーザー john は SELECT * FROM db.new_table クエリを実行できます。
アスタリスクを指定できるのは、プレフィックスに対してのみです。
GRANT SELECT ON db.* TO john -- 正しい
GRANT SELECT ON db*.* TO john -- 正しい
GRANT SELECT ON *.my_table TO john -- 誤り
GRANT SELECT ON foo*bar TO john -- 誤り
GRANT SELECT ON *suffix TO john -- 誤り
GRANT SELECT(foo) ON db.table* TO john -- 誤り権限
権限とは、ユーザーに対して特定の種類のクエリの実行を許可するものです。
権限には階層構造があり、実行できるクエリの範囲は権限のスコープによって決まります。
ClickHouse における権限の階層は以下のとおりです。
ALLアクセス管理ALLOW SQL SECURITY NONEALTER QUOTAALTER ROLEALTER ROW POLICYALTER SETTINGS PROFILEALTER USERCREATE QUOTACREATE ROLECREATE ROW POLICYCREATE SETTINGS PROFILECREATE USERDROP QUOTADROP ROLEDROP ROW POLICYDROP SETTINGS PROFILEDROP USERROLE ADMINSHOW ACCESSSHOW QUOTASSHOW ROLESSHOW ROW POLICIESSHOW SETTINGS PROFILESSHOW USERS
ALTERALTER DATABASEALTER DATABASE SETTINGS
ALTER TABLEALTER COLUMNALTER ADD COLUMNALTER CLEAR COLUMNALTER COMMENT COLUMNALTER DROP COLUMNALTER MATERIALIZE COLUMNALTER MODIFY COLUMNALTER RENAME COLUMN
ALTER CONSTRAINTALTER ADD CONSTRAINTALTER DROP CONSTRAINTALTER MODIFY CONSTRAINT
ALTER DELETEALTER FETCH PARTITIONALTER FREEZE PARTITIONALTER INDEXALTER ADD INDEXALTER CLEAR INDEXALTER DROP INDEXALTER MATERIALIZE INDEXALTER ORDER BYALTER SAMPLE BY
ALTER MATERIALIZE TTLALTER MODIFY COMMENTALTER MOVE PARTITIONALTER PROJECTIONALTER SETTINGSALTER STATISTICSALTER ADD STATISTICSALTER DROP STATISTICSALTER MATERIALIZE STATISTICSALTER MODIFY STATISTICS
ALTER TTLALTER UPDATEALTER TABLE EXECUTE
ALTER VIEWALTER VIEW MODIFY QUERYALTER VIEW REFRESHALTER VIEW MODIFY SQL SECURITY
BACKUPCLUSTERCREATECREATE ARBITRARY TEMPORARY TABLECREATE TEMPORARY TABLE
CREATE DATABASECREATE DICTIONARYCREATE FUNCTIONCREATE RESOURCECREATE TABLECREATE VIEWCREATE WORKLOAD
dictGetdisplaySecretsInShowAndSelectDROPDROP DATABASEDROP DICTIONARYDROP FUNCTIONDROP RESOURCEDROP TABLEDROP VIEWDROP WORKLOAD
INSERTINTROSPECTIONaddressToLineaddressToLineWithInlinesaddressToSymboldemangle
KILL QUERYKILL TRANSACTIONMOVE PARTITION BETWEEN SHARDSNAMED COLLECTION ADMINALTER NAMED COLLECTIONCREATE NAMED COLLECTIONDROP NAMED COLLECTIONNAMED COLLECTIONSHOW NAMED COLLECTIONSSHOW NAMED COLLECTIONS SECRETS
OPTIMIZESELECTSET DEFINERSHOWSHOW COLUMNSSHOW DATABASESSHOW DICTIONARIESSHOW TABLES
SHOW FILESYSTEM CACHESSOURCESAZUREBIGQUERYFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
SYSTEMSYSTEM BACKGROUNDSYSTEM STREAMING ENGINESSYSTEM VIEWS
SYSTEM CLEANUPSYSTEM DROP CACHESYSTEM DROP COMPILED EXPRESSION CACHESYSTEM DROP CONNECTIONS CACHESYSTEM DROP DISTRIBUTED CACHESYSTEM DROP DNS CACHESYSTEM DROP FILESYSTEM CACHESYSTEM DROP FORMAT SCHEMA CACHESYSTEM DROP MARK CACHESYSTEM DROP MMAP CACHESYSTEM DROP PAGE CACHESYSTEM DROP PRIMARY INDEX CACHESYSTEM DROP QUERY CACHESYSTEM DROP S3 CLIENT CACHESYSTEM DROP SCHEMA CACHESYSTEM DROP UNCOMPRESSED CACHE
SYSTEM DROP REPLICASYSTEM FAILPOINTSYSTEM FETCHESSYSTEM FLUSHSYSTEM FLUSH ASYNC INSERT QUEUESYSTEM FLUSH LOGS
SYSTEM JEMALLOCSYSTEM LISTENSYSTEM LOAD PRIMARY KEYSYSTEM MERGESSYSTEM MOVESSYSTEM PULLING REPLICATION LOGSYSTEM REDUCE BLOCKING PARTSSYSTEM REPLICATION QUEUESSYSTEM REPLICA READINESSSYSTEM RESET DDL WORKERSYSTEM RESTART DISKSYSTEM RESTART REPLICASYSTEM RESTORE REPLICASYSTEM RELOADSYSTEM RELOAD ASYNCHRONOUS METRICSSYSTEM RELOAD CONFIGSYSTEM RELOAD DICTIONARYSYSTEM RELOAD EMBEDDED DICTIONARIESSYSTEM RELOAD FUNCTIONSYSTEM RELOAD MODELSYSTEM RELOAD USERS
SYSTEM SENDSSYSTEM DISTRIBUTED SENDSSYSTEM REPLICATED SENDS
SYSTEM SHUTDOWNSYSTEM SYNC DATABASE REPLICASYSTEM SYNC FILE CACHESYSTEM SYNC FILESYSTEM CACHESYSTEM SYNC REPLICASYSTEM SYNC TRANSACTION LOGSYSTEM THREAD FUZZERSYSTEM TTL MERGESSYSTEM UNFREEZESYSTEM UNLOAD PRIMARY KEYSYSTEM VIRTUAL PARTS UPDATESYSTEM WAIT LOADING PARTS
テーブルエンジンTRUNCATEUNDROP TABLE
NONE
この階層がどのように扱われるかの例:
ALTER権限には、ほかのすべてのALTER*権限が含まれます。ALTER CONSTRAINTには、ALTER ADD CONSTRAINT権限、ALTER DROP CONSTRAINT権限、ALTER MODIFY CONSTRAINT権限が含まれます。
権限は異なるレベルで適用されます。レベルがわかると、その権限に対して使用できる構文もわかります。
レベル (低いものから高いものの順) :
COLUMN— 権限はカラム、テーブル、データベース、またはグローバルに対して付与できます。TABLE— 権限はテーブル、データベース、またはグローバルに対して付与できます。VIEW— 権限はビュー、データベース、またはグローバルに対して付与できます。DICTIONARY— 権限は Dictionary、データベース、またはグローバルに対して付与できます。DATABASE— 権限はデータベースまたはグローバルに対して付与できます。GLOBAL— 権限はグローバルに対してのみ付与できます。GROUP— 異なるレベルの権限をグループ化したものです。GROUPレベルの権限を付与すると、使用した構文に対応するグループ内の権限のみが付与されます。
許可される構文の例:
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
特別な権限 ALL は、ユーザーアカウントまたはロールにすべての権限を付与します。
デフォルトでは、ユーザーアカウントまたはロールには権限がありません。
ユーザーまたはロールに権限がない場合は、NONE 権限として表示されます。
一部のクエリは、その実装上、一連の権限を必要とします。たとえば、RENAME クエリを実行するには、次の権限が必要です: SELECT、CREATE TABLE、INSERT、DROP TABLE。
SELECT
SELECT クエリの実行を許可します。
権限レベル: COLUMN。
説明
この権限が付与されたユーザーは、指定したデータベースおよびテーブルにおいて、指定したカラムの一覧に対する SELECT クエリを実行できます。指定されたもの以外のカラムをユーザーが含めた場合、そのクエリはデータを返しません。
次の権限について考えてみましょう。
GRANT SELECT(x,y) ON db.table TO johnこの権限により、john は db.table の x および/または y カラムのデータを含む任意の SELECT クエリを実行できます。たとえば、SELECT x FROM db.table です。john は SELECT z FROM db.table を実行できません。SELECT * FROM db.table も実行できません。このクエリを処理しても、ClickHouse は x や y を含め、データを一切返しません。唯一の例外は、テーブルに x と y のカラムしかない場合で、この場合は ClickHouse がすべてのデータを返します。
INSERT
INSERT クエリの実行を許可します。
権限レベル: COLUMN。
説明
この権限を付与されたユーザーは、指定したデータベース内の指定したテーブルに対して、指定されたカラムの一覧に対する INSERT クエリを実行できます。ユーザーが指定されたもの以外のカラムを含めた場合、そのクエリではデータは挿入されません。
例
GRANT INSERT(x,y) ON db.table TO john付与された権限により、john は db.table の x および/または y カラムにデータを挿入できます。
ALTER
次の権限階層に従って、ALTERクエリの実行を許可します。
ALTER。レベル:COLUMN。ALTER TABLE。レベル:GROUPALTER UPDATE。レベル:COLUMN。別名:UPDATEALTER DELETE。レベル:COLUMN。別名:DELETEALTER COLUMN。レベル:GROUPALTER ADD COLUMN。レベル:COLUMN。別名:ADD COLUMNALTER DROP COLUMN。レベル:COLUMN。別名:DROP COLUMNALTER MODIFY COLUMN。レベル:COLUMN。別名:MODIFY COLUMNALTER COMMENT COLUMN。レベル:COLUMN。別名:COMMENT COLUMNALTER CLEAR COLUMN。レベル:COLUMN。別名:CLEAR COLUMNALTER RENAME COLUMN。レベル:COLUMN。別名:RENAME COLUMNALTER INDEX。レベル:GROUP。別名:INDEXALTER ORDER BY。レベル:TABLE。別名:ALTER MODIFY ORDER BY,MODIFY ORDER BYALTER SAMPLE BY。レベル:TABLE。別名:ALTER MODIFY SAMPLE BY,MODIFY SAMPLE BYALTER ADD INDEX。レベル:TABLE。別名:ADD INDEXALTER DROP INDEX。レベル:TABLE。別名:DROP INDEXALTER MATERIALIZE INDEX。レベル:TABLE。別名:MATERIALIZE INDEXALTER CLEAR INDEX。レベル:TABLE。別名:CLEAR INDEXALTER CONSTRAINT。レベル:GROUP。別名:CONSTRAINTALTER ADD CONSTRAINT。レベル:TABLE。別名:ADD CONSTRAINTALTER DROP CONSTRAINT。レベル:TABLE。別名:DROP CONSTRAINTALTER MODIFY CONSTRAINT。レベル:TABLE。別名:MODIFY CONSTRAINTALTER TTL。レベル:TABLE。別名:ALTER MODIFY TTL,MODIFY TTLALTER MATERIALIZE TTL。レベル:TABLE。別名:MATERIALIZE TTLALTER SETTINGS。レベル:TABLE。別名:ALTER SETTING,ALTER MODIFY SETTING,MODIFY SETTINGALTER MOVE PARTITION。レベル:TABLE。別名:ALTER MOVE PART,MOVE PARTITION,MOVE PARTALTER FETCH PARTITION。レベル:TABLE。別名:ALTER FETCH PART,FETCH PARTITION,FETCH PARTALTER FREEZE PARTITION。レベル:TABLE。別名:FREEZE PARTITIONALTER EXECUTE。レベル:TABLE。別名:ALTER TABLE EXECUTEALTER VIEW。レベル:GROUPALTER VIEW REFRESH。レベル:VIEW。別名:REFRESH VIEWALTER VIEW MODIFY QUERY。レベル:VIEW。別名:ALTER TABLE MODIFY QUERYALTER VIEW MODIFY SQL SECURITY。レベル:VIEW。別名:ALTER TABLE MODIFY SQL SECURITY
この階層の扱い方の例:
ALTER権限には、他のすべてのALTER*権限が含まれます。ALTER CONSTRAINTには、ALTER ADD CONSTRAINT、ALTER DROP CONSTRAINT、ALTER MODIFY CONSTRAINTの権限が含まれます。
注記
MODIFY SETTING権限では、テーブルエンジンの設定を変更できます。settings やサーバー設定のパラメータには影響しません。ATTACH操作には CREATE 権限が必要です。DETACH操作には DROP 権限が必要です。- KILL MUTATIONクエリでミューテーションを停止するには、そのミューテーションを開始できる権限が必要です。たとえば、
ALTER UPDATEクエリを停止したい場合は、ALTER UPDATE、ALTER TABLE、またはALTER権限が必要です。
BACKUP
クエリで [BACKUP] を実行できます。バックアップの詳細については、"バックアップと復元" をご覧ください。
CREATE
次の権限階層に応じて、CREATE および ATTACH DDLクエリの実行を許可します。
CREATE。レベル:GROUPCREATE DATABASE。レベル:DATABASECREATE TABLE。レベル:TABLECREATE ARBITRARY TEMPORARY TABLE。レベル:GLOBALCREATE TEMPORARY TABLE。レベル:GLOBAL
CREATE VIEW。レベル:VIEWCREATE DICTIONARY。レベル:DICTIONARY
注記
- 作成したテーブルを削除するには、ユーザーに DROP 権限が必要です。
クラスター
ON CLUSTER クエリを実行できます。
GRANT CLUSTER ON *.* TO <username>デフォルトでは、ON CLUSTER を含むクエリを実行するには、ユーザーに CLUSTER 権限付与が必要です。
CLUSTER 権限付与を事前に行わずにクエリで ON CLUSTER を使おうとすると、次のエラーが発生します。
Not enough privileges. To execute this query, it's necessary to have the grant CLUSTER ON *.*.デフォルトの動作は、config.xml の access_control_improvements セクションにある on_cluster_queries_require_cluster_grant 設定 (以下を参照) を false に設定することで変更できます。
<access_control_improvements>
<on_cluster_queries_require_cluster_grant>true</on_cluster_queries_require_cluster_grant>
</access_control_improvements>DROP
以下の権限階層に従って、DROP および DETACH クエリを実行できます。
DROP。レベル:GROUPDROP DATABASE。レベル:DATABASEDROP TABLE。レベル:TABLEDROP VIEW。レベル:VIEWDROP DICTIONARY。レベル:DICTIONARY
TRUNCATE
TRUNCATE クエリの実行を許可します。
権限レベル: TABLE。
OPTIMIZE
OPTIMIZE TABLE クエリを実行できます。
権限レベル: TABLE。
SHOW
次の権限階層に従って、SHOW、DESCRIBE、USE、EXISTS クエリの実行を許可します。
SHOW。レベル:GROUPSHOW DATABASES。レベル:DATABASE。SHOW DATABASES、SHOW CREATE DATABASE、USE <database>クエリの実行を許可します。SHOW TABLES。レベル:TABLE。SHOW TABLES、EXISTS <table>、CHECK <table>クエリの実行を許可します。SHOW COLUMNS。レベル:COLUMN。SHOW CREATE TABLE、DESCRIBEクエリの実行を許可します。SHOW DICTIONARIES。レベル:DICTIONARY。SHOW DICTIONARIES、SHOW CREATE DICTIONARY、EXISTS <dictionary>クエリの実行を許可します。
注意
指定したテーブル、Dictionary、またはデータベースに関する他のいずれかの権限を持っているユーザーには、SHOW 権限も付与されます。
KILL QUERY
次の権限階層に従って、KILLクエリを実行できます。
権限レベル: GLOBAL。
注意
KILL QUERY 権限を持つユーザーは、他のユーザーのクエリを強制終了できます。
アクセス管理
ユーザーが、ユーザー、ロール、行ポリシーを管理するクエリを実行できるようにします。
ACCESS MANAGEMENT. レベル:GROUPCREATE USER. レベル:GLOBALALTER USER. レベル:GLOBALDROP USER. レベル:GLOBALCREATE ROLE. レベル:GLOBALALTER ROLE. レベル:GLOBALDROP ROLE. レベル:GLOBALROLE ADMIN. レベル:GLOBALCREATE ROW POLICY. レベル:GLOBAL. 別名:CREATE POLICYALTER ROW POLICY. レベル:GLOBAL. 別名:ALTER POLICYDROP ROW POLICY. レベル:GLOBAL. 別名:DROP POLICYCREATE QUOTA. レベル:GLOBALALTER QUOTA. レベル:GLOBALDROP QUOTA. レベル:GLOBALCREATE SETTINGS PROFILE. レベル:GLOBAL. 別名:CREATE PROFILEALTER SETTINGS PROFILE. レベル:GLOBAL. 別名:ALTER PROFILEDROP SETTINGS PROFILE. レベル:GLOBAL. 別名:DROP PROFILESHOW ACCESS. レベル:GROUPSHOW_USERS. レベル:GLOBAL. 別名:SHOW CREATE USERSHOW_ROLES. レベル:GLOBAL. 別名:SHOW CREATE ROLESHOW_ROW_POLICIES. レベル:GLOBAL. 別名:SHOW POLICIES,SHOW CREATE ROW POLICY,SHOW CREATE POLICYSHOW_QUOTAS. レベル:GLOBAL. 別名:SHOW CREATE QUOTASHOW_SETTINGS_PROFILES. レベル:GLOBAL. 別名:SHOW PROFILES,SHOW CREATE SETTINGS PROFILE,SHOW CREATE PROFILE
ALLOW SQL SECURITY NONE. レベル:GLOBAL. 別名:CREATE SQL SECURITY NONE,SQL SECURITY NONE,SECURITY NONE
ROLE ADMIN 権限があると、admin オプション付きでそのユーザーに付与されていないロールも含め、あらゆるロールを付与したり取り消したりできます。
SYSTEM
以下の権限階層に従って、ユーザーは SYSTEM クエリを実行できます。
SYSTEM。レベル:GROUPSYSTEM SHUTDOWN。レベル:GLOBAL。別名:SYSTEM KILL,SHUTDOWNSYSTEM DROP CACHE。別名:DROP CACHESYSTEM DROP DNS CACHE。レベル:GLOBAL。別名:SYSTEM CLEAR DNS CACHE,SYSTEM DROP DNS,DROP DNS CACHE,DROP DNSSYSTEM DROP MARK CACHE。レベル:GLOBAL。別名:SYSTEM CLEAR MARK CACHE,SYSTEM DROP MARK,DROP MARK CACHE,DROP MARKSSYSTEM DROP UNCOMPRESSED CACHE。レベル:GLOBAL。別名:SYSTEM CLEAR UNCOMPRESSED CACHE,SYSTEM DROP UNCOMPRESSED,DROP UNCOMPRESSED CACHE,DROP UNCOMPRESSED
SYSTEM RELOAD。レベル:GROUPSYSTEM RELOAD CONFIG。レベル:GLOBAL。別名:RELOAD CONFIGSYSTEM RELOAD DICTIONARY。レベル:GLOBAL。別名:SYSTEM RELOAD DICTIONARIES,RELOAD DICTIONARY,RELOAD DICTIONARIES,SYSTEM UNLOAD DICTIONARY,SYSTEM UNLOAD DICTIONARIES,UNLOAD DICTIONARY,UNLOAD DICTIONARIESSYSTEM RELOAD EMBEDDED DICTIONARIES。レベル:GLOBAL。別名:RELOAD EMBEDDED DICTIONARIES
SYSTEM MERGES。レベル:TABLE。別名:SYSTEM STOP MERGES,SYSTEM START MERGES,STOP MERGES,START MERGESSYSTEM TTL MERGES。レベル:TABLE。別名:SYSTEM STOP TTL MERGES,SYSTEM START TTL MERGES,STOP TTL MERGES,START TTL MERGESSYSTEM FETCHES。レベル:TABLE。別名:SYSTEM STOP FETCHES,SYSTEM START FETCHES,STOP FETCHES,START FETCHESSYSTEM MOVES。レベル:TABLE。別名:SYSTEM STOP MOVES,SYSTEM START MOVES,STOP MOVES,START MOVESSYSTEM SENDS。レベル:GROUP。別名:SYSTEM STOP SENDS,SYSTEM START SENDS,STOP SENDS,START SENDSSYSTEM DISTRIBUTED SENDS。レベル:TABLE。別名:SYSTEM STOP DISTRIBUTED SENDS,SYSTEM START DISTRIBUTED SENDS,STOP DISTRIBUTED SENDS,START DISTRIBUTED SENDSSYSTEM REPLICATED SENDS。レベル:TABLE。別名:SYSTEM STOP REPLICATED SENDS,SYSTEM START REPLICATED SENDS,STOP REPLICATED SENDS,START REPLICATED SENDS
SYSTEM REPLICATION QUEUES。レベル:TABLE。別名:SYSTEM STOP REPLICATION QUEUES,SYSTEM START REPLICATION QUEUES,STOP REPLICATION QUEUES,START REPLICATION QUEUESSYSTEM SYNC REPLICA。レベル:TABLE。別名:SYNC REPLICASYSTEM RESTART REPLICA。レベル:TABLE。別名:RESTART REPLICASYSTEM BACKGROUND。レベル:GROUPSYSTEM STREAMING ENGINES。レベル:TABLESYSTEM VIEWS。レベル:VIEW。別名: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。レベル:GROUPSYSTEM FLUSH DISTRIBUTED。レベル:TABLE。別名:FLUSH DISTRIBUTEDSYSTEM FLUSH LOGS。レベル:GLOBAL。別名:FLUSH LOGS
SYSTEM UNLOAD DICTIONARY および SYSTEM UNLOAD DICTIONARIES コマンドは SYSTEM RELOAD DICTIONARY 権限を使用するため、SYSTEM RELOAD DICTIONARY を持つユーザーは Dictionary をアンロードすることもできます。
SYSTEM RELOAD EMBEDDED DICTIONARIES 権限は、SYSTEM RELOAD DICTIONARY ON *.* 権限により暗黙的に付与されます。
INTROSPECTION
イントロスペクション関数を使用できるようにします。
INTROSPECTION. レベル:GROUP. 別名:INTROSPECTION FUNCTIONSaddressToLine. レベル:GLOBALaddressToLineWithInlines. レベル:GLOBALaddressToSymbol. レベル:GLOBALdemangle. レベル:GLOBAL
SOURCES
外部データソースの使用を許可します。テーブルエンジンおよびテーブル関数に適用されます。
READ. レベル:GLOBAL_WITH_PARAMETERWRITE. レベル:GLOBAL_WITH_PARAMETER
指定可能なパラメーター:
AZUREBIGQUERYFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
例:
- MySQL テーブルエンジンでテーブルを作成するには、
CREATE TABLE (ON db.table_name)とMYSQL権限が必要です。 - mysql テーブル関数を使用するには、
CREATE TEMPORARY TABLEとMYSQL権限が必要です。
ソースフィルターの権限付与
正規表現フィルターを使うことで、特定のソース URI へのアクセス権を付与できます。これにより、ユーザーがアクセスできる外部データソースをきめ細かく制御できます。
構文:
GRANT READ ON S3('regexp_pattern') TO userこの権限付与により、ユーザーは指定した正規表現パターンに一致する S3 URI からのみ読み取りできるようになります。
例:
特定の 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 johnGRANT OPTION を付けた再付与:
元の権限付与に WITH GRANT OPTION が含まれている場合は、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重要な制限事項:
- 部分的な取り消しはできません: 付与済みのフィルターパターンの一部だけを取り消すことはできません。必要な場合は、付与全体をいったん取り消したうえで、新しいパターンで再付与する必要があります。
- ワイルドカードによる権限付与はできません:
GRANT READ ON *('regexp')や、これに類するワイルドカードのみのパターンは使用できません。必ず具体的なソースを指定してください。
dictGet
dictGet。別名:dictHas,dictGetHierarchy,dictGetRoot,dictGetChildren,dictGetDescendants,dictIsIn
ユーザーに dictGet、dictHas、dictGetHierarchy、dictGetRoot、dictGetChildren、dictGetDescendants、dictIsIn 関数の実行を許可します。
権限レベル: DICTIONARY。
例
GRANT dictGet ON mydb.mydictionary TO johnGRANT dictGet ON mydictionary TO john
displaySecretsInShowAndSelect
display_secrets_in_show_and_select サーバー設定
と
format_display_secrets_in_show_and_select フォーマット設定
の両方が有効になっている場合、ユーザーは SHOW クエリおよび SELECT クエリでシークレットを表示できます。
NAMED COLLECTION ADMIN
指定した named collection に対する特定の操作を許可する権限です。バージョン 23.7 より前は NAMED COLLECTION CONTROL と呼ばれていましたが、23.7 以降は NAMED COLLECTION ADMIN が追加され、NAMED COLLECTION CONTROL は別名として維持されています。
NAMED COLLECTION ADMIN. レベル:NAMED_COLLECTION. 別名:NAMED COLLECTION CONTROLCREATE NAMED COLLECTION. レベル:NAMED_COLLECTIONDROP NAMED COLLECTION. レベル:NAMED_COLLECTIONALTER NAMED COLLECTION. レベル:NAMED_COLLECTIONSHOW NAMED COLLECTIONS. レベル:NAMED_COLLECTION. 別名:SHOW NAMED COLLECTIONSSHOW NAMED COLLECTIONS SECRETS. レベル:NAMED_COLLECTION. 別名:SHOW NAMED COLLECTIONS SECRETSNAMED COLLECTION. レベル:NAMED_COLLECTION. 別名:NAMED COLLECTION USAGE, USE NAMED COLLECTION
他のすべての権限 (CREATE、DROP、ALTER、SHOW) とは異なり、NAMED COLLECTION 権限が追加されたのは 23.7 で、他はそれより前の 22.12 に追加されています。
例
named collection の名前が abc であるとすると、ユーザー john に CREATE NAMED COLLECTION 権限を付与します。
GRANT CREATE NAMED COLLECTION ON abc TO john
TABLE ENGINE
テーブル作成時に、指定したテーブルエンジンを使用できるようにします。テーブルエンジン に適用されます。
例
GRANT TABLE ENGINE ON * TO johnGRANT TABLE ENGINE ON TinyLog TO john
外部ソースを使用する一部のテーブルエンジンでは、対応するソースに対する READ/WRITE 権限が必要になる場合があります。SOURCES を参照してください。
たとえば、AzureBlobStorage テーブルエンジンでは、次の権限が必要になる場合があります。
GRANT READ, WRITE ON AZURE TO john
ALL
規制対象エンティティに対するすべての権限を、ユーザーアカウントまたはロールに付与します。
NONE
権限は一切付与されません。
ADMIN OPTION
ADMIN OPTION 権限があると、ユーザーは自身のロールを別のユーザーに付与できます。