必要に応じて、ユーザーに付与する有効または無効なロールを指定できます。
1人のユーザーに複数のロールを付与できます。ロールを付与した後、そのうちどのロールを有効にし、どのロールを無効にするかを設定できます。ユーザーは有効なロールのすべての権限を持ち、無効なロールに含まれる権限は持ちません。
ログイン時に有効または無効にするロールの指定
OceanBaseデータベースのOracleモードでは、ALTER USERステートメントのDEFAULT ROLE句を使用して、他のユーザーがログイン時に有効または無効になるロールを指定できます。
前提条件
現在のユーザーは、有効または無効にするロールを持っている必要があり、
GRANT OPTION権限も持っている必要があります。現在のユーザーは、
UPDATE USERシステム権限も持っている必要があります。これにより、ALTER USERコマンドを実行できます。
現在持っている権限を確認するには、ユーザー権限の確認を参照してください。GRANT OPTION権限がない場合は、管理者に連絡し、追加してもらってください。ユーザー権限の追加に関する操作については、直接権限付与を参照してください。現在持っているロールを確認するには、ロールの確認を参照してください。
注意事項
DEFAULT ROLE句は、GRANTステートメントで直接ユーザーに付与されたロール、またはCREATE ROLE権限を持つユーザーが作成したロールのみを指定することができます。DEFAULT ROLE句では、以下のロールを指定することはできません:
ユーザーに付与されていないロール
ログイン時に有効または無効にするロールがユーザーに付与されていない場合は、指定できません。ユーザーロールの付与に関する操作については、ロールの付与を参照してください。
他のロールから付与されたロール
ログイン時に有効または無効にするロールが他のロールから付与された場合は、指定できません。ロールの付与に関する操作については、ロールの付与を参照してください。
ロールの有効・無効化構文
主なシナリオは以下の通りです:
ログイン時に有効にする、ユーザーが付与された1つ以上のロールを指定する場合
SQLステートメントは次のとおりです:
obclient> ALTER USER user_name DEFAULT ROLE role_name;ログイン時に有効にする、ユーザーが付与されたすべてのロールを指定する場合
SQLステートメントは次のとおりです:
obclient> ALTER USER user_name DEFAULT ROLE ALL;ログイン時に有効にする、ユーザーが付与された一部のロールを指定する場合
SQLステートメントは次のとおりです:
obclient> ALTER USER user_name DEFAULT ROLE ALL EXCEPT role_name;ログイン時に無効にする、ユーザーが付与されたすべてのロールを指定する場合
SQLステートメントは次のとおりです:
obclient>ALTER USER user_name DEFAULT ROLE NONE;
ステートメントの使用方法:
role_name:ロール名。複数のロール名は半角カンマ(,)で区切ります。ALL:ログイン時に有効にするユーザーが付与されたすべてのロールを表します。EXCEPT句は、EXCEPT句で列挙されたロールを除く、ログイン時に有効にするユーザーが付与された他のすべてのロールを表します。複数のロール名は半角カンマ(,)で区切ります。NONE:ログイン時に無効にするユーザーが付与されたすべてのロールを表します。
操作例
ログイン時に有効にする、ユーザーが付与されたロール role1 を指定します。
obclient>ALTER USER test DEFAULT ROLE role1;
ALTER USER ステートメントの詳細については、ALTER USERを参照してください。
現在のセッションで有効または無効にするロールを指定する
OceanBaseデータベースのOracleモードでは、SET ROLE ステートメントを使用して、現在のセッション内で、現在ログインしているユーザーが付与されているロールを有効または無効にできます。
説明
SET ROLE ステートメントで有効または無効にするロールは、現在のセッションにのみ影響し、後続のセッションには影響しません。
主な使用シナリオは以下のとおりです:
現在のセッションで、現在ログインしているユーザーが付与された1つ以上のロールを有効にする
SQLステートメントは次のとおりです:
obclient> SET ROLE role_name [ IDENTIFIED BY password ];現在のセッションで、現在ログインしているユーザーが付与されたすべてのロールを有効にする
SQLステートメントは次のとおりです:
obclient> SET ROLE ALL;現在のセッションで、現在ログインしているユーザーが付与された一部のロールを有効にする
SQLステートメントは次のとおりです:
obclient> SET ROLE ALL EXCEPT role_name;現在のセッションで、現在ログインしているユーザーが付与されたすべてのロールを無効にする
SQLステートメントは次のとおりです:
obclient> SET ROLE NONE;
ステートメントの使用方法:
role_name:ロール名。複数のロール名は半角カンマ(,)で区切ります。IDENTIFIED BY password:有効にするロールのパスワードを指定します。新規ロール作成時にそのロールにパスワードが設定されている場合は、そのロールを有効にするにはパスワードを指定する必要があります。ロールの新規作成に関する操作と紹介については、ロールの作成を参照してください。
ALL:現在のセッションで、現在ログインしているユーザーが付与されたすべてのロールを有効にすることを示します。注意
ユーザーが付与されたすべてのロールを有効にする場合、付与されたロールの中にパスワードが指定されているロールがあると、システムはエラーを返します。
EXCEPT句は、EXCEPT句で列挙されたロールを除き、現在ログインしているユーザーが付与された他のすべてのロールを有効にすることを示します。複数のロール名は半角カンマ(,)で区切ります。NONE:現在ログインしているユーザーが付与されたすべてのロールを無効にすることを示します。
例:
パスワード
******で識別されるロールrole1を現在のセッションで有効にするobclient> SET ROLE role1 IDENTIFIED BY ******; Query OK, 0 rows affectedロール
role2を除くすべてのロールを現在のセッションで有効にするobclient> SET ROLE ALL EXCEPT role2; Query OK, 0 rows affected
SET ROLE ステートメントの詳細については、SET ROLEを参照してください。