必要に応じて、ユーザーに有効または無効なロールを指定できます。
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を参照してください。