メインコンテンツへスキップ
メインコンテンツへスキップ

CREATE ROLE

新しいロールを作成します。ロールは権限の集合です。ユーザーにロールを割り当てると、そのユーザーにはそのロールに含まれるすべての権限が付与されます。

構文:

ROLE を作成する [IF NOT EXISTS | OR REPLACE] name1 [, name2 [,...]] [ON CLUSTER cluster_name]
    [IN access_storage_type]
    [SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [CONST|READONLY|WRITABLE|CHANGEABLE_IN_READONLY] | PROFILE 'profile_name'] [,...]

ロールの管理

1人のユーザーには複数のロールを割り当てることができます。ユーザーは、SET ROLE ステートメントを使用して、自分に割り当てられたロールを任意の組み合わせで適用できます。最終的な権限の範囲は、適用されたすべてのロールが持つ権限を統合した集合になります。ユーザーアカウントに直接付与された権限がある場合、それらもロールによって付与された権限と統合されます。

ユーザーには、ログイン時に適用されるデフォルトロールを設定できます。デフォルトロールを設定するには、SET DEFAULT ROLE ステートメント、または ALTER USER ステートメントを使用します。

ロールを取り消すには、REVOKE ステートメントを使用します。

ロールを削除するには、DROP ROLE ステートメントを使用します。削除されたロールは、それが割り当てられていたすべてのユーザーおよびロールから自動的に取り消されます。

CREATE ROLE accountant;
GRANT SELECT ON db.* TO accountant;

この一連のクエリでは、db データベースからデータを読み取る権限を持つロール accountant を作成します。

ユーザー mira へのロール割り当て:

mira に accountant 権限を付与;

ロールが割り当てられると、ユーザーはそのロールを有効にして、許可されたクエリを実行できます。例えば、次のとおりです。

SET ROLE accountant;
SELECT * FROM db.*;