GRANT 構文を使用して、ユーザーに指定された権限を付与できます。たとえば、ユーザーにテーブルの読み取りおよび書き込み権限、またはデータベースのフル権限を付与できます。
適用可能なエンジン
GRANT 構文は、LindormTable および LindormTSDB のすべてのバージョンに適用できます。
構文
grant_permission_statement ::= GRANT privilege_definition ON resource_definition TO user_identifier
privilege_definition ::= ALL | READ | WRITE | ADMIN | TRASH | SYSTEM
resource_definition ::= GLOBAL | DATABASE identifier | SCHEMA identifier | TABLE identifierパラメーター
GRANT ステートメントが正常に実行できるかどうかは、ステートメントを実行するユーザーに付与されている権限によって異なります。詳細については、「ユーザーと権限の管理」をご参照ください。
権限 (privilege_definition)
次の表に、付与できる権限を示します。
権限 | 説明 |
ALL または ALL PRIVILEGE | READ、WRITE、ADMIN、TRASH を含む、リソースに対するすべての権限をユーザーに付与します。 |
READ | リソースに対する読み取り権限をユーザーに付与します。 |
WRITE | リソースに対する書き込み権限をユーザーに付与します。 |
ADMIN | リソースに対する管理者権限をユーザーに付与します。 重要 ADMIN 権限は、READ 権限および WRITE 権限とは無関係です。データベースに対する ADMIN 権限が付与されたユーザーは、テーブルに対する読み取り権限または書き込み権限が付与されていない限り、データベース内のすべてのテーブルを読み書きできない場合があります。 |
TRASH | リソースに対する削除権限をユーザーに付与します。 |
SYSTEM | リソースに対するクラスター管理権限をユーザーに付与します。SYSTEM 権限には、GLOBAL レベルの ADMIN 権限が含まれます。 重要 特定のデータベースに SYSTEM 権限を付与することはできません。 |
リソースレベル (resource_definition)
次の表に、GRANT 構文を使用して LindormTable および LindormTSDB で権限を付与できるリソースのレベルを示します。
リソースレベル | LindormTable | LindormTSDB | 説明 |
GLOBAL | 〇 | 〇 | グローバルリソースに対する権限をユーザーに付与します。 重要 GLOBAL レベルのリソースに対して、特に ALL PRIVILEGE 権限を付与することはお勧めしません。 |
DATABASE | 〇 | 〇 | 指定されたデータベースに対する権限をユーザーに付与します。DATABASE レベルは SCHEMA レベルと同等です。 説明 LindormTable 2.5.3.3 以降のバージョンでは、 |
TABLE | 〇 | ✖️ | 指定されたテーブルに対する権限をユーザーに付与します。 |
上記の表の 3 つのリソースレベルは、GLOBAL > DATABASE (SCHEMA) > TABLE の順にスコープが狭くなります。たとえば、ユーザーが GLOBAL レベルのリソースに対する READ 権限を持っている場合、ユーザーはデータベース内のすべてのテーブルを読み取ることができます。
DATABASE、SCHEMA、または TABLE キーワードを使用する場合は、権限レベルの識別子を指定する必要があります。たとえば、DATABASE default および SCHEMA default は default という名前のデータベースを示し、TABLE test は test という名前のテーブルを示します。
権限が付与されるユーザー (user_identifier)
user_identifier パラメーターは、権限が付与されるユーザーを示します。
例
すべての権限をユーザーに付与する
データベース db1 に対するすべての権限を user1 という名前のユーザーに付与します。
GRANT ALL ON DATABASE db1 TO user1;
-- or
GRANT ALL ON SCHEMA db1 TO user1;指定された権限をユーザーに付与する
データベース db2 内の table2 に対する ADMIN 権限を user2 という名前のユーザーに付与します。
GRANT ADMIN ON TABLE db2.table2 TO user2;現在のデータベース内の table3 に対する WRITE 権限を user3 という名前のユーザーに付与します。
GRANT WRITE ON TABLE table3 TO user3;GLOBAL レベルの READ 権限を user4 という名前のユーザーに付与します。
GRANT READ ON GLOBAL TO user4;