説明
このステートメントは、現在のセッションに対するロール権限を有効または無効にします。
構文
SET ROLE
{ role_name [ IDENTIFIED BY password ][, role_name [ IDENTIFIED BY password ] ]...
| ALL [ EXCEPT role_name [, role_name ]... ]
| NONE
}
-- ロールタイプの説明
role_name:
'role_name' -- 文字列形式
| name -- イデントファイア形式
| DBA -- 組み込みロール
| RESOURCE
| CONNECT
| PUBLIC
パラメータの説明
| パラメータ | 説明 | |---------------|----------------- | | role_name | 現在のセッションで有効にするロール名を指定します。 | | IDENTIFIED BY password | ロールのパスワードを指定します。ロールにパスワードが設定されている場合、そのロールを有効にするにはパスワードを指定する必要があります。 | | ALL | 現在のセッションに付与されたすべてのロールを有効にします。EXCEPT 句は、リストされたロールを除くことを意味し、オプションです。パスワード付きのロールが直接付与されている場合は、この句を指定できません。そうしないとエラーが発生します。 | | NONE | 現在のセッションのすべてのロールを無効にします。 |
例
-- 1. ロールとテーブルの作成
obclient> CREATE ROLE manager_role;
obclient> CREATE ROLE analyst_role;
obclient> CREATE TABLE employees(id INT, name VARCHAR(20));
-- 2. ロール権限の付与
obclient> GRANT SELECT ON employees TO analyst_role;
obclient> GRANT ALL ON employees TO manager_role;
-- 3. ユーザーへのロールの付与
obclient> CREATE USER john IDENTIFIED BY "Password123!";
obclient> GRANT manager_role, analyst_role TO john;
-- 4. ユーザーのロール切り替え
obclient> CONNECT john/password
obclient> SET ROLE manager_role; -- 管理者ロールの使用
obclient> SET ROLE analyst_role; -- アナリストロールへの切り替え
obclient> SET ROLE ALL; -- すべてのロールを有効にする
obclient> SET ROLE ALL EXCEPT analyst_role; -- アナリスト以外のすべてのロールを有効にする
obclient> SET ROLE NONE; -- すべてのロールを無効にする