Oracle管理者のためのSQLリファレンス

権限の確認/付与/取り消し

ユーザーはデータベースに接続したり、SQL文を発行してオブジェクトにアクセスするには「権限」が必要です。権限には「システム権限」と「オブジェクト権限」があります。権限は非常に多くの種類があるため、一般にはいくつかの権限をまとめた「ロール」を作成し、これをユーザーに付与/取り消して管理します。(SQLの表記ルールは、こちらから参照できます)

権限を確認する
SELECT * FROM user_sys_privs;
-- または
SELECT * FROM session_privs;
-- または
SELECT * FROM dba_sys_privs;
ユーザーに与えられている権限を確認するには、USER_SYS_PRIVSまたはSESSION_PRIVSまたはDBA_SYS_PRIVSに問い合わせます。USER_SYS_PRIVSではデータベースに接続しているユーザー自身に直接付与された権限、SESSION_PRIVSではセッションで使用可能な権限(ロール経由で付与されたものを含む)を確認できます。すべてのユーザーの情報を確認するにはDBA_SYS_PRIVSに問い合わせますが、このビューにアクセスするにはSELECT ANY TABLE権限が必要です。この権限は、デフォルトでDBAロールに割り当てられます。
関連項目:ロールの確認/作成/付与/変更/取り消し/削除

システム権限を付与する
GRANT {system_privilege | ALL PRIVILEGES}
      [, system_privilege …]
TO {user | role | PUBLIC} [, {user | role} …]
[IDENTIFIED BY password]
[WITH ADMIN OPTION];
システム権限を付与するには、GRANT文のTO句で付与するユーザー名、ロール名あるいはPUBLICを明示し、システム権限名(system_privilege)あるいはALL PRIVILEGESを指定します。システム権限とユーザー(ロール)は複数指定可能です。ALL PRIVILEGESを指定すると、SELECT ANY DICTIONARY権限を除き、すべてのシステム権限を付与できます。ユーザー名にPUBLICを指定すると、すべてのユーザーはその権限によって許可される操作を実行できます。

IDENTIFIED BY句
IDENTIFIED BY句に続けてパスワードを指定することで、既存ユーザーを明確に識別できます(ユーザーが存在しない場合は新規にユーザーが作成されます)。 IDENTIFIED BY句はロールまたはPUBLICには指定できません。

With Admin Option句
With Admin Option句を指定すると、
  ・権限がGLOBALロールでない場合、その権限をほかのユーザーに付与可能
  ・権限をほかのユーザーから取り消すことが可能
  ・権限へのアクセスに必要な認可を変更するため、権限を変更可能
  ・権限を削除可能
になります。
関連項目:システム権限を取り消す

システム権限を取り消す
REVOKE {system_privilege| ALL PRIVILEGES}
       [, system_privilege …]
FROM {user | role | PUBLIC} [, {user | role} …];
システム権限を取り消すには、REVOKE文のFROM句でユーザー名、ロール名あるいはPUBLICを明示し、取り消すシステム権限名(system_privilege)あるいはALL PRIVILEGESを指定します。システム権限とユーザー(ロール)は複数指定可能です。PUBLICのシステム権限を取り消す場合、PUBLICを介して付与された権限が取り消されるのみで、直接またはロールを介して付与さた権限は取り消されません。
関連項目:システム権限を付与する

オブジェクト権限を付与する
GRANT {object_privilege | ALL PRIVILEGES}
      [(column [, column …])]
      [, {object_privilege} [(column [, column …])]…]
ON {schema.object |
    {DIRECTORY directory_name |
     JAVA {SOURCE | RESOURCE} [schema.]object}}
TO {user | role | PUBLIC} [, {user | role} …]
[WITH HIERARCHY OPTION]
[WITH GRANT OPTION];
オブジェクト権限を付与するには、GRANT文のTO句で付与するユーザー名、ロール名あるいはPUBLICを明示し、ON句で対象となるオブジェクト名(schema.object)あるいはディレクトリ・スキーマ・オブジェクト名、Javaソースおよびリソース・スキーマ・オブジェクト名を指定し、オブジェクト権限名(object_privilege)あるいはALL PRIVILEGESを指定します。オブジェクト権限とユーザー(ロール)は複数指定可能です。権限を付与する表またはビューの列(column)を指定することも可能です(INSERT、REFERENCES、UPDATEの各権限のみ)。列を指定しないと表またはビューのすべての列に権限が付与されます。

WITH HIERARCHY OPTION句
WITH HIERARCHY OPTION句を指定すると、今後作成されるサブオブジェクトも含めてすべてのサブオブジェクトに対して権限を付与できます。

WITH GRANT OPTION句
WITH GRANT OPTION句を指定すると、ほかのユーザーまたはロールに対するオブジェクト権限の付与を許可できます。ただし、ロールに対してWith Grant Optionは指定できません。
関連項目:オブジェクト権限を取り消す

オブジェクト権限を取り消す
REVOKE {object_privilege| ALL PRIVILEGES}
       [, object_privilege …]
ON {schema.object |
    {DIRECTORY directory_name |
     JAVA {SOURCE | RESOURCE} [schema.]object}}
FROM {user | role | PUBLIC} [, {user | role} …]
[CASCADE CONSTRAINTS]
[FORCE] ;
オブジェクト権限を取り消すには、REVOKE文のFROM句でユーザー名、ロール名あるいはPUBLICを明示し、ON句で対象となるオブジェクト名(schema.object)あるいはディレクトリ・スキーマ・オブジェクト名、Javaソースおよびリソース・スキーマ・オブジェクト名を指定し、オブジェクト権限名(object_privilege)あるいはALL PRIVILEGESを指定します。オブジェクト権限とユーザー(ロール)は複数指定可能です。

CASCADE CONSTRAINTS句
CASCADE CONSTRAINTS句は、REFERENCES権限またはALL PRIVILEGESを取り消すときにのみ適用します。REFERENCES権限を使用して定義した参照整合性制約を削除します。

FORCE句
FORCE句を指定すると、表または型に依存するユーザー定義型オブジェクトで、EXECUTEオブジェクト権限を取り消せます。
関連項目:オブジェクト権限を付与する

Oracle管理者のためのSQLリファレンス



   Oracle関連記事リンク集


Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間