【ORACLE】システム権限を付与・取消するSQL
ここではORACLEデータベースで、ユーザにシステム権限を付与するSQLを紹介しています。
ユーザに付与された権限のを確認する方法は↓で紹介しています。
>>【ORACLE】ユーザに付与されている権限を確認するSQL
システム権限とは
システム権限とは、ユーザーがデータベースに対して操作を行うための権限です。
例えば、Aというユーザーがデータベースを作成したり変更したりする権限やテーブルやインデックスを作成したり変更したりする権限があります。
表を作成する権限は「CREATE TABLE」権限で、付与したスキーマ内でのみ表を作成することが出来ます。他のスキーマで表を作成する場合には「CREATE_ANY_TABLE」という風にANYをつけます。
システム権限とオブジェクト権限の違い
システム権限はデータベースに対する権限で、オブジェクト権限は任意の表やオブジェクトに対する権限という違いがあります。
オブジェクト権限については、↓で詳しく解説していますので参考にしてください。
>>【ORACLE】オブジェクト権限を付与・取消するSQL
システム権限を確認する方法
ユーザに付与されたシステム権限はDBA_SYS_PRIVSで確認できます。
DBA_SYS_PRIVSの詳細は↓で紹介していますので参考にしてください。
>>【ORACLE】ユーザに付与されている権限を確認するSQL
システム権限を付与する基本構文
ユーザにシステム権限を付与するときはGRANT文を使います。
GRANT文では、システム権限名とユーザ名を指定します。
GRANT システム権限名 TO ユーザ名
[WITH ADMIN OPTION];
・[WITH ADMIN OPTION]を指定することで、ロールを付与されたユーザーがその権限を別のユーザーに付与することが出来ます。
システム権限は100種類近くあります。システム権限位置らは↓のページで紹介していますので参考にしてください。
>>【ORACLE】システム権限の一覧
GRANT文を使ったSQLサンプル
ここからはGRANT文を使ったSQLサンプルを紹介します。
権限を1つ付与する方法
GRANT文を使ってシステム権限を1つ付与する方法です。
次のSQLでは、USER1に表を作成するシステム権限を付与しています。2行目のSQLでは、USER1に表に問い合わせる権限を付与しています。
GRANT CREATE TABLE TO user1;
GRANT SELECT ANY TABLE TO user1;
同時に複数の権限を付与する方法
GRANT文では、同時に複数のシステム権限を付与することが出来ます。複数の権限を付与する場合はシステム権限名をカンマ区切りで追加します。
次のSQLでは、USER1に索引を作成するシステム権限とビューを作成するシステム権限を付与しています。
GRANT CREATE INDEX,CREATE VIEW TO user1;
全権限を付与する方法
GRANT文では一度に全てのシステム権限(SELECT ANY DICTIONARYを除く)を付与することが出来ます。
次のSQLでは、USER1に全てのシステム権限を付与しています。
GRANT ALL PRIVILEGES TO user1;
システム権限を取消する基本構文
ユーザのシステム権限を取消(剝奪)するときはREVOKE文を使います。
REVOKE文では、取り消したいシステム権限名とユーザ名を指定します。
REVOKE システム権限名 FROM ユーザ名;
REVOKE文を使ったSQLサンプル
ここからはREVOKE文を使ったSQLサンプルを紹介します。
権限を1つ取り消す方法
REVOKE CREATE TABLE FROM user1;
REVOKE SELECT ANY TABLE FROM user1;
権限を複数同時に取り消す方法
REVOKE CREATE INDEX,CREATE VIEW FROM user1;
全権限を取り消す方法
REVOKE ALL PRIVILEGES FROM user1;
まとめ
システム権限の付与はGRANT文、取り消しはREVOKE文を使います。
GRANT ALL~とすることで全ての権限を付与することもできます。REVOKE ALL~とすることで全ての権限を剝奪することもできます。
権限については↓でも紹介していますのでぜひ参考にしてください。
・【ORACLE】権限とは?システム・オブジェクト権限について
・【ORACLE】システム権限の一覧
・【ORACLE】オブジェクト権限を付与・取消するSQL
・【ORACLE】オブジェクト権限を確認するSQL
・【ORACLE】ユーザに付与されている権限を確認するSQL
・【ORACLE】ロールに付与されている権限を確認するSQL