Oracle 19c では、特定の表に対してのみユーザーに SELECT 権限を付与し、不要な権限を与えないように管理できます。以下にその手順をまとめます。
- ユーザーの作成
まず、新しいユーザーを作成します。
CREATE USER user_name IDENTIFIED BY password;
- 基本的な権限の付与
ユーザーがデータベースに接続できるようにするために、CONNECT 権限を付与します。
GRANT CONNECT TO user_name;
- 特定の表に対して SELECT 権限を付与
ユーザーに特定の表に対する SELECT 権限を付与します。
GRANT SELECT ON schema_name.table_name TO user_name;
複数の表に対して権限を付与する場合、それぞれの表に対して個別に実行します。
GRANT SELECT ON schema_name.table_name1 TO user_name;
GRANT SELECT ON schema_name.table_name2 TO user_name;
- ロールを使用して権限を管理(オプション)
複数のユーザーに同じ権限を付与したい場合は、ロールを作成し、そのロールに対して権限を付与する方法が便利です。
CREATE ROLE select_role;
GRANT SELECT ON schema_name.table_name1 TO select_role;
GRANT SELECT ON schema_name.table_name2 TO select_role;
GRANT select_role TO user_name;
これにより、権限の管理が簡単になり、複数のユーザーに対して一括で権限を付与できます。
- ユーザーやロールの権限を取り消す
ユーザーの権限を取り消す
特定の表に対するユーザーの SELECT 権限を取り消すには、以下のコマンドを使用します。
REVOKE SELECT ON schema_name.table_name FROM user_name;
他の権限(INSERT, UPDATE, DELETE など)も取り消すことができます。
REVOKE INSERT ON schema_name.table_name FROM user_name;
REVOKE UPDATE ON schema_name.table_name FROM user_name;
REVOKE DELETE ON schema_name.table_name FROM user_name;
ロールの権限を取り消す
ロールに対する特定の権限を取り消す場合、以下のようにします。
REVOKE SELECT ON schema_name.table_name FROM select_role;
- ユーザーやロールの削除
ユーザーの削除
ユーザーを削除し、そのユーザーが持つオブジェクトも一緒に削除するには、CASCADE オプションを使用します。
DROP USER user_name CASCADE;
オブジェクトを保持したい場合は、手動で処理した後、ユーザーを削除します。
DROP USER user_name;
ロールの削除
不要になったロールは以下のコマンドで削除できます。
DROP ROLE select_role;
- ユーザーやロールの権限を変更
GRANT や REVOKE コマンドを使って、ユーザーやロールの権限を随時変更することができます。
ユーザーに UPDATE 権限を付与する場合:
GRANT UPDATE ON schema_name.table_name TO user_name;
ロールから INSERT 権限を取り消す場合:
REVOKE INSERT ON schema_name.table_name FROM select_role;
これらの手順を通じて、ユーザーやロールに対する権限を柔軟に管理し、特定の表へのアクセスのみを許可し、不要な権限を付与しないように制御できます。