ClickHouse/docs/ja/sql-reference/statements/grant.md
2021-07-21 23:08:38 +08:00

24 KiB

machine_translated machine_translated_rev toc_priority toc_title
true cbd8aa9052 39 GRANT

GRANT

  • 助成金 特権 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 — Type of privilege.
  • role — ClickHouse user role.
  • user — ClickHouse user account.

この 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 role.
  • user — ClickHouse user account.

この WITH ADMIN OPTION 句の付与 ADMIN OPTION への特権 user または role. この WITH REPLACE OPTION 句はuserまたは roleの新しい役割によって古い役割を置き換えます, 指定しない場合は、古い特権を古いものに追加してください

使用法

使用するには 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 そのため、同じまたはより小さいスコープの特権を持つ他のユーザーに付与できます。

アスタリスクを使用できる権限の指定 (*)テーブルまたはデータベース名の代わりに。 例えば、 GRANT SELECT ON db.* TO john クエリ許可 john 実行するには SELECT すべてのテーブルに対するクエリ db データベース。 また、データベース名を省略できます。 この場合、現在のデータベースに特権が付与されます。 例えば, GRANT SELECT ON * TO john 現在のデータベ, GRANT SELECT ON mytable TO john の権限を付与します。 mytable 現在のデータベース内のテーブル。

へのアクセス system databaseは常に許可されます(このデータベースはクエリの処理に使用されるため)。

一つのクエリで複数のアカウントに複数の権限を付与できます。 クエリ GRANT SELECT, INSERT ON *.* TO john, robin アカウントを許可 john そして robin 実行するには INSERT そして SELECT クエリのテーブルのすべてのデータベースに、サーバーにコピーします。

特権

特権は、特定の種類のクエリを実行する権限です。

権限には階層構造があります。 許可されるクエリのセットは、特権スコープに依存します。

特権の階層:

  • 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

この階層がどのように扱われるかの例:

  • この ALTER 特典を含む他のすべての ALTER* 特権だ
  • ALTER CONSTRAINT 含む ALTER ADD CONSTRAINT そして ALTER DROP CONSTRAINT 特権だ

特権は異なるレベルで適用されます。 レベルを知ることは、特権に利用可能な構文を示唆しています。

レベル(下位から上位へ):

  • 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-レベルの特権が付与され、使用される構文に対応するグループからの特権のみが付与されます。

許可される構文の例:

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

禁止された構文の例:

  • GRANT CREATE USER(x) ON db.table TO user
  • GRANT 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 実行するには SELECT データを含むクエリ x および/または y の列 db.table 例えば, 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 にデータを挿入するには x および/または y の列 db.table.

ALTER

実行を許可する ALTER 次の特権の階層に従ってクエリを実行します:

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

この階層がどのように扱われるかの例:

  • この ALTER 特典を含む他のすべての ALTER* 特権だ
  • ALTER CONSTRAINT 含む ALTER ADD CONSTRAINT そして ALTER DROP CONSTRAINT 特権だ

ノート

  • この MODIFY SETTING 権限を変更できるテーブルエンジンを設定します。 設定やサーバー構成パラメーターには影響しません。
  • この ATTACH 操作は必要とします CREATE 特権だ
  • この DETACH 操作は必要とします DROP 特権だ
  • によって突然変異を停止するには KILL MUTATION クエリ、あなたはこの突然変異を開始する権限を持っている必要があります。 たとえば、 ALTER UPDATE 問い合わせ、必要とします ALTER UPDATE, ALTER TABLE,または ALTER 特権だ

CREATE

実行を許可する CREATE そして ATTACH DDL-次の特権の階層に従ったクエリ:

  • CREATE. レベル: GROUP
    • CREATE DATABASE. レベル: DATABASE
    • CREATE TABLE. レベル: TABLE
    • CREATE VIEW. レベル: VIEW
    • CREATE DICTIONARY. レベル: DICTIONARY
    • CREATE TEMPORARY TABLE. レベル: GLOBAL

ノート

  • 削除し、作成したテーブルは、ユーザーニーズ DROP.

DROP

実行を許可する DROP そして DETACH 次の特権の階層に従ってクエリを実行します:

  • DROP. レベル:
    • DROP DATABASE. レベル: DATABASE
    • DROP TABLE. レベル: TABLE
    • DROP VIEW. レベル: VIEW
    • DROP DICTIONARY. レベル: DICTIONARY

TRUNCATE

実行を許可する TRUNCATE クエリ。

特権レベル: TABLE.

OPTIMIZE

実行を許可する OPTIMIZE TABLE クエリ。

特権レベル: TABLE.

SHOW

実行を許可する SHOW, DESCRIBE, USE,and EXISTS 次の特権の階層に従ってクエリを実行します:

  • SHOW. レベル: GROUP
    • SHOW 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> クエリ。

ノート

ユーザは、 SHOW 特典の場合は、その他の特典に関する指定されたテーブル、辞書やデータベースです。

KILL QUERY

実行を許可する KILL 次の特権の階層に従ってクエリを実行します:

特権レベル: GLOBAL.

ノート

KILL QUERY 特典でユーザを殺クエリのその他のユーザー

ACCESS MANAGEMENT

ユーザー、ロール、および行ポリシーを管理するクエリを実行できます。

  • ACCESS MANAGEMENT. レベル: GROUP
    • CREATE USER. レベル: GLOBAL
    • ALTER USER. レベル: GLOBAL
    • DROP USER. レベル: GLOBAL
    • CREATE ROLE. レベル: GLOBAL
    • ALTER ROLE. レベル: GLOBAL
    • DROP ROLE. レベル: GLOBAL
    • ROLE ADMIN. レベル: GLOBAL
    • CREATE ROW POLICY. レベル: GLOBAL. 別名: CREATE POLICY
    • ALTER ROW POLICY. レベル: GLOBAL. 別名: ALTER POLICY
    • DROP ROW POLICY. レベル: GLOBAL. 別名: DROP POLICY
    • CREATE QUOTA. レベル: GLOBAL
    • ALTER QUOTA. レベル: GLOBAL
    • DROP QUOTA. レベル: GLOBAL
    • CREATE SETTINGS PROFILE. レベル: GLOBAL. 別名: CREATE PROFILE
    • ALTER SETTINGS PROFILE. レベル: GLOBAL. 別名: ALTER PROFILE
    • DROP SETTINGS PROFILE. レベル: GLOBAL. 別名: DROP PROFILE
    • SHOW ACCESS. レベル: GROUP
      • SHOW_USERS. レベル: GLOBAL. 別名: SHOW CREATE USER
      • SHOW_ROLES. レベル: GLOBAL. 別名: SHOW CREATE ROLE
      • SHOW_ROW_POLICIES. レベル: GLOBAL. 別名: SHOW POLICIES, SHOW CREATE ROW POLICY, SHOW CREATE POLICY
      • SHOW_QUOTAS. レベル: GLOBAL. 別名: SHOW CREATE QUOTA
      • SHOW_SETTINGS_PROFILES. レベル: GLOBAL. 別名: SHOW PROFILES, SHOW CREATE SETTINGS PROFILE, SHOW CREATE PROFILE

この ROLE ADMIN 特典できるユーザーに割り当ておよび取り消す為の役割を含めるものではありませんので、ユーザーの管理のオプションです。

SYSTEM

ユーザーに実行を許可する SYSTEM 次の特権の階層に従ってクエリを実行します。

  • SYSTEM. レベル: GROUP
    • SYSTEM SHUTDOWN. レベル: GLOBAL. 別名: SYSTEM KILL, SHUTDOWN
    • SYSTEM DROP CACHE. 別名: DROP CACHE
      • SYSTEM DROP DNS CACHE. レベル: GLOBAL. 別名: SYSTEM DROP DNS, DROP DNS CACHE, DROP DNS
      • SYSTEM DROP MARK CACHE. レベル: GLOBAL. 別名: SYSTEM DROP MARK, DROP MARK CACHE, DROP MARKS
      • SYSTEM DROP UNCOMPRESSED CACHE. レベル: GLOBAL. 別名: SYSTEM DROP UNCOMPRESSED, DROP UNCOMPRESSED CACHE, DROP UNCOMPRESSED
    • SYSTEM RELOAD. レベル: GROUP
      • SYSTEM RELOAD CONFIG. レベル: GLOBAL. 別名: RELOAD CONFIG
      • SYSTEM RELOAD DICTIONARY. レベル: GLOBAL. 別名: SYSTEM RELOAD DICTIONARIES, RELOAD DICTIONARY, RELOAD DICTIONARIES
      • SYSTEM RELOAD EMBEDDED DICTIONARIES. レベル: GLOBAL. 別名:RELOAD EMBEDDED DICTIONARIES
    • SYSTEM MERGES. レベル: TABLE. 別名: SYSTEM STOP MERGES, SYSTEM START MERGES, STOP MERGES, START MERGES
    • SYSTEM TTL MERGES. レベル: TABLE. 別名: SYSTEM STOP TTL MERGES, SYSTEM START TTL MERGES, STOP TTL MERGES, START TTL MERGES
    • SYSTEM FETCHES. レベル: TABLE. 別名: SYSTEM STOP FETCHES, SYSTEM START FETCHES, STOP FETCHES, START FETCHES
    • SYSTEM MOVES. レベル: TABLE. 別名: SYSTEM STOP MOVES, SYSTEM START MOVES, STOP MOVES, START MOVES
    • SYSTEM SENDS. レベル: GROUP. 別名: SYSTEM STOP SENDS, SYSTEM START SENDS, STOP SENDS, START SENDS
      • SYSTEM DISTRIBUTED SENDS. レベル: TABLE. 別名: SYSTEM STOP DISTRIBUTED SENDS, SYSTEM START DISTRIBUTED SENDS, STOP DISTRIBUTED SENDS, START DISTRIBUTED SENDS
      • SYSTEM 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 QUEUES
    • SYSTEM SYNC REPLICA. レベル: TABLE. 別名: SYNC REPLICA
    • SYSTEM RESTART REPLICA. レベル: TABLE. 別名: RESTART REPLICA
    • SYSTEM FLUSH. レベル: GROUP
      • SYSTEM FLUSH DISTRIBUTED. レベル: TABLE. 別名: FLUSH DISTRIBUTED
      • SYSTEM FLUSH LOGS. レベル: GLOBAL. 別名: FLUSH LOGS

この SYSTEM RELOAD EMBEDDED DICTIONARIES によって暗黙的に付与される特権 SYSTEM RELOAD DICTIONARY ON *.* 特権だ

INTROSPECTION

使用を許可する 内省 機能。

  • INTROSPECTION. レベル: GROUP. 別名: INTROSPECTION FUNCTIONS
    • addressToLine. レベル: GLOBAL
    • addressToSymbol. レベル: GLOBAL
    • demangle. レベル: GLOBAL

SOURCES

外部データソースの使用を許可します。 に適用されます 表エンジン そして テーブル関数.

  • SOURCES. レベル: GROUP
    • FILE. レベル: GLOBAL
    • URL. レベル: GLOBAL
    • REMOTE. レベル: GLOBAL
    • YSQL. レベル: GLOBAL
    • ODBC. レベル: GLOBAL
    • JDBC. レベル: GLOBAL
    • HDFS. レベル: GLOBAL
    • S3. レベル: GLOBAL

この SOURCES 特権は、すべてのソースの使用を可能にします。 また、各ソースに個別に権限を付与することもできます。 ソースを使用するには、追加の権限が必要です。

例:

  • テーブルを作成するには MySQLテーブルエンジン、必要とします CREATE TABLE (ON db.table_name) そして MYSQL 特権だ
  • を使用するには mysqlテーブル関数、必要とします CREATE TEMPORARY TABLE そして MYSQL 特権だ

dictGet

  • dictGet. 別名: dictHas, dictGetHierarchy, dictIsIn

ユーザーに実行を許可する dictGet, ディクタス, dictGetHierarchy, ジクチシン 機能。

特権レベル: DICTIONARY.

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

ALL

助成金の全ての権限を規制組織のユーザーアカウントまたは役割を担う。

NONE

権限は付与されません。

ADMIN OPTION

この ADMIN OPTION 特典できるユーザー補助金の役割を他のユーザーです。

元の記事