メインコンテンツまでスキップ
メインコンテンツまでスキップ

CREATE ROLE

新しい roles を作成します。ロールは、一連の privileges です。ロールに割り当てられた user は、このロールのすべての権限を取得します。

構文:

CREATE 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'] [,...]

ロールの管理

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

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

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

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

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

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

ユーザー mira にロールを割り当てます:

GRANT accountant TO mira;

ロールが割り当てられた後、ユーザーはそれを適用し、許可されたクエリを実行できます。たとえば:

SET ROLE accountant;
SELECT * FROM db.*;