システム権限をユーザやロールに付与する

GRANT {システム権限名 [, ...] | ALL PRIVILEGES } TO {ユーザ名 [ IDENTIFIED BY パスワード ] | ロール名 | PUBLIC } [ , ... ]
[ WITH ADMIN OPTION ]

システム権限をユーザーまたはロールに付与する。

システム権限名は、カンマで区切って複数指定することができる。システム権限名の代わりにALL PRIVILEGESを指定すると、すべてのシステム権限を付与することができる。

TO PUBLIC
すべてのユーザに権限を付与する。
WITH ADMIN OPTION
システム権限を与えられたユーザが、その権限をさらに他のユーザへ与えることをできるようにする。

「ORA-01045: user YAJIMA lacks CREATE SESSION privilege; login denied」の対処として、ユーザーにシステム権限を付与する例を示す。

SQL> GRANT CREATE SESSION TO YAJIMA;

または、ロールを付与する。

SQL> GRANT CONNECT TO YAJIMA;

「ORA-01950: 表領域'USERS'に対する権限がありません」の対処として、ユーザーにシステム権限を付与する例を示す。

SQL> GRANT UNLIMITED TABLESPACE TO YAJIMA;

または、ロールを付与する。

SQL> GRANT RESOURCE TO YAJIMA;

オブジェクト権限をユーザやロールに付与する

オブジェクト(表や索引など)対する参照・挿入・削除・更新の処理権限を利用者に与えます。

GRANT privilege[,... ] ON [schema.]object TO {user|role|PUBLIC}[,...] [WITH GRANT OPTION]
privilege
オブジェクト権限を次の構文で指定する。
{ オブジェクト権限名 | ALL [ PRIVILEGES ] }
[ ( 列名 [ , ... ] ) ]
object

オブジェクトを指定する。

user

オブジェクト権限を付与するユーザを指定する。

role

オブジェクト権限を付与するロールを指定する。

PUBLIC

指定したオブジェクト権限をすべてのユーザに対して付与する。

WITH GRANT OPTION

オブジェクト権限を与えられたユーザが、その権限をさらに他のユーザへ与えることをできるようにする。

ディレクトリ・データベース・オブジェクトに関するオブジェクト権限を付与する場合の構文を次に示す。

GRANT {READ|WRITE}[,... ] ON DIRECTORY directory TO {ユーザ名|ロール名|PUBLIC}[,...] [WITH GRANT OPTION];

directory にはディレクトリ・データベース・オブジェクトの名前を指定する。

ユーザ又はロールにロールを付与する

ロールをユーザに付与するには、GRANT文を使用します。ロールを他のロールに与えることもできます。

GRANT role[,...] TO {user [IDENTIFIED BY password]|role|PUBLIC}[,...] [WITH ADMIN OPTION]
role

付与するロールを指定する。複数のロールをカンマで区切って指定することができる。

user

ロールを付与するユーザを指定する。

role

ロールを付与するロールを指定する。

PUBLIC

すべてのユーザにロールを付与する。

WITH ADMIN OPTION

ロールを与えられたユーザが、そのロールをさらに他のユーザへ与えることをできるようにする。

ユーザにロールを割り当てる例を次に示します。

SQL> create role CUSTOMERSERVICE;
SQL> grant select on CUSTOMERTABLE to CUSTOMERSERVICE;
SQL> grant CUSTOMERSERVICE to YAJIMA;

「ORA-01045: user YAJIMA lacks CREATE SESSION privilege; login denied」の対処として、ユーザーにロールを付与する例を示す。

SQL> GRANT CONNECT TO YAJIMA;

「ORA-01950: 表領域'USERS'に対する権限がありません」の対処として、ユーザーにロールを付与する例を示す。

SQL> GRANT RESOURCE TO YAJIMA;
スポンサーリンク