メインコンテンツまでスキップ
に最終更新

GRANT TO

説明​

GRANT コマンドは、次の操作に使用します。

  1. 指定した権限をユーザーまたはロールに付与します。
  2. 指定したロールをユーザーに付与します。

関連コマンド

構文​

指定した権限をユーザーまたはロールに付与

GRANT <privilege_list> 
ON { <priv_level>
| RESOURCE <resource_name>
| WORKLOAD GROUP <workload_group_name>
| COMPUTE GROUP <compute_group_name>
| STORAGE VAULT <storage_vault_name>
}
TO { <user_identity> | ROLE <role_name> }

指定したロールをユーザーに付与

GRANT <role_list> TO <user_identity> 

必須パラメータ​

1. <privilege_list>

付与する権限をカンマ区切りで指定します。現在は次の権限をサポートします。

  • NODE_PRIV: ノードのオンライン・オフライン操作を含む、クラスターノードの操作権限。
  • ADMIN_PRIV: NODE_PRIV を除くすべての権限。
  • GRANT_PRIV: ユーザーやロールの作成・削除、権限の付与・取り消し、パスワード設定などを行う権限。
  • SELECT_PRIV: 指定したデータベースまたはテーブルに対する読み取り権限。
  • LOAD_PRIV: 指定したデータベースまたはテーブルへのインポート権限。
  • ALTER_PRIV: 指定したデータベースまたはテーブルのスキーマ変更権限。
  • CREATE_PRIV: 指定したデータベースまたはテーブルの作成権限。
  • DROP_PRIV: 指定したデータベースまたはテーブルの削除権限。
  • USAGE_PRIV: 指定したリソースとワークロードグループの使用権限。
  • SHOW_VIEW_PRIV: ビューの作成文を表示する権限。

従来の権限の変換:

  • ALL と READ_WRITE は SELECT_PRIV、LOAD_PRIV、ALTER_PRIV、CREATE_PRIV、DROP_PRIV に変換されます。
  • READ_ONLY は SELECT_PRIV に変換されます。

2. <priv_level>

次の四つの形式をサポートします。

  • ..*: すべてのカタログ、およびその中のすべてのデータベースとテーブルに権限を適用できます。
  • catalog_name..: 指定したカタログ内のすべてのデータベースとテーブルに権限を適用できます。
  • catalog_name.db.*: 指定したデータベース内のすべてのテーブルに権限を適用できます。
  • catalog_name.db.tbl: 指定したデータベース内の指定したテーブルに権限を適用できます。

3. <resource_name>

リソース名を指定します。% と * を使用してすべてのリソースに一致させることはできますが、res* のようなワイルドカードには対応しません。

4. <workload_group_name>

ワークロードグループ名を指定します。% と * ですべてのワークロードグループに一致させることはできますが、ワイルドカードには対応しません。

5. <compute_group_name>

コンピュートグループ名を指定します。% と * ですべてのコンピュートグループに一致させることはできますが、ワイルドカードには対応しません。

6. <storage_vault_name>

ストレージボールト名を指定します。% と * ですべてのストレージボールトに一致させることはできますが、ワイルドカードには対応しません。

7. <user_identity>

権限の付与先ユーザーを指定します。CREATE USER で作成した user_identity である必要があります。user_identity の host にはドメイン名を指定できます。その場合、権限が有効になるまで約 1 分遅れることがあります。

8. <role_name>

権限の付与先ロールを指定します。指定したロールが存在しない場合は自動的に作成されます。

9. <role_list>

割り当てるロールをカンマ区切りで指定します。指定するロールは存在する必要があります。

必要な権限​

この SQL コマンドを実行するユーザーには、少なくとも次の権限が必要です。

権限対象説明
GRANT_PRIVUser or RoleREVOKE 操作を実行できるのは GRANT_PRIV 権限を持つユーザーまたはロールのみです。

例​

  • すべてのカタログ、データベース、テーブルに対する権限をユーザーに付与します。

    GRANT SELECT_PRIV ON *.*.* TO 'jack'@'%';
  • 指定したデータベーステーブルに対する権限をユーザーに付与します。

    GRANT SELECT_PRIV,ALTER_PRIV,LOAD_PRIV ON ctl1.db1.tbl1  TO 'jack'@'192.8.%';
  • 指定したデータベーステーブルに対する権限をロールに付与します。

    GRANT LOAD_PRIV ON ctl1.db1.* TO ROLE 'my_role';
  • すべてのリソースへのアクセス権をユーザーに付与します。

    GRANT USAGE_PRIV ON RESOURCE * TO 'jack'@'%';
  • 指定したリソースの使用権限をユーザーに付与します。

    GRANT USAGE_PRIV ON RESOURCE 'spark_resource' TO 'jack'@'%';
  • 指定したリソースへのアクセス権をロールに付与します。

    GRANT USAGE_PRIV ON RESOURCE 'spark_resource' TO ROLE 'my_role';
  • 指定したロールをユーザーに付与します。

    GRANT 'role1','role2' TO 'jack'@'%';
  • 指定したワークロードグループ 'g1' をユーザー jack に付与します。

    GRANT USAGE_PRIV ON WORKLOAD GROUP 'g1' TO 'jack'@'%';
  • すべてのワークロードグループに一致する権限をユーザー jack に付与します。

    GRANT USAGE_PRIV ON WORKLOAD GROUP '%' TO 'jack'@'%';
  • ワークロードグループ 'g1' をロール my_role に付与します。

    GRANT USAGE_PRIV ON WORKLOAD GROUP 'g1' TO ROLE 'my_role';
  • jack に db1 の view1 の作成文を表示する権限を付与します。

    GRANT SHOW_VIEW_PRIV ON db1.view1 TO 'jack'@'%';
  • 指定したコンピュートグループの使用権限をユーザーに付与します。

    GRANT USAGE_PRIV ON COMPUTE GROUP 'group1' TO 'jack'@'%';
  • 指定したコンピュートグループの使用権限をロールに付与します。

    GRANT USAGE_PRIV ON COMPUTE GROUP 'group1' TO ROLE 'my_role';
  • すべてのコンピュートグループの使用権限をユーザーに付与します。

    GRANT USAGE_PRIV ON COMPUTE GROUP '*' TO 'jack'@'%';
  • 指定したストレージボールトの使用権限をユーザーに付与します。

    GRANT USAGE_PRIV ON STORAGE VAULT 'vault1' TO 'jack'@'%';
  • 指定したストレージボールトの使用権限をロールに付与します。

    GRANT USAGE_PRIV ON STORAGE VAULT 'vault1' TO ROLE 'my_role';
  • すべてのストレージボールトの使用権限をユーザーに付与します。

    GRANT USAGE_PRIV ON STORAGE VAULT '*' TO 'jack'@'%';