GRANT

GRANTはユーザやロールに権限またはロールを付与するSQL文である。

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

システム権限をユーザに付与するSQLの構文を次に示す。

GRANT privilege [, ...] TO user [, ...] [ IDENTIFIED BY password ] [ WITH ADMIN OPTION ]
privilege
ユーザへ付与するシステム権限を指定する。カンマで区切って、複数のシステム権限を指定できる。

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

SQL> GRANT CREATE SESSION TO TSUKAMOTO;

付与するシステム権限に「ALL PRIVILEGES」を指定すると、すべてのシステム権限がユーザに付与される。

SQL> GRANT ALL PRIVILEGES TO TSUKAMOTO;
user
システム権限を付与するユーザを指定する。カンマで区切って、複数のユーザを指定できる。
SQL> GRANT CREATE SESSION TO inoue, tsukamoto;

ユーザに PUBLIC を指定すると、すべてのユーザにシステム権限が付与される。

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

ロールを付与する。

SQL> GRANT CONNECT TO TSUKAMOTO;

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

SQL> GRANT UNLIMITED TABLESPACE TO TSUKAMOTO;

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

SQL> GRANT RESOURCE TO TSUKAMOTO;

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

システム権限をロールに付与するSQLの構文を次に示す。

GRANT system-privilege TO role [ WITH ADMIN OPTION ]
system-privilege
付与するシステム権限を指定する。カンマで区切って、複数のシステム権限を指定できる。
role
システム権限を付与するロールを指定する。カンマで区切って、複数のロールを指定できる。
WITH ADMIN OPTION
システム権限を与えられたロールが、その権限をさらに他のユーザやロールへ与えることをできるようにする。

すべてのシステム権限をロールに付与する

すべてのシステム権限をロールに付与するSQLの構文を次に示す。

GRANT ALL PRIVILEGES TO role
GRANT ALL PRIVILEGES TO role WITH ADMIN OPTION
role
システム権限を付与するロールを指定する。カンマで区切って、複数のロールを指定できる。
WITH ADMIN OPTION
システム権限を与えられたロールが、その権限をさらに他のユーザやロールへ与えることをできるようにする。

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

オブジェクト権限をユーザに付与するSQLの構文を次に示す。

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

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

user
オブジェクト権限を付与するユーザを指定する。カンマで区切って、複数のユーザを指定できる。

ユーザに PUBLIC を指定すると、すべてのユーザにオブジェクト権限が付与される。

WITH GRANT OPTION
オブジェクト権限を与えられたユーザが、その権限をさらに他のユーザへ与えることをできるようにする。
WITH HIERARCHY OPTION
objectを基にしたサブオブジェクトに対して指定したオブジェクト権限を付与できる。

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

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

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

emp表に対するSELECTとUPDATEのオブジェクト権限をtsukaに与える。

GRANT SELECT, UPDATE ON emp TO tsuka

emp表に対するすべてのオブジェクト権限をtsukaに与える。

GRANT ALL PRIVILEGES ON emp TO tsuka

emp表に対するSELECTオブジェクト権限をすべてのユーザに与える。

GRANT SELECT ON emp TO PUBLIC

emp表に対するSELECTオブジェクト権限をtsukaに与える。tsukaは他のユーザにもSELECTオブジェクト権限を与えられる。

GRANT SELECT ON emp TO tsuka WITH GRANT OPTION

repositoryディレクトリに対する読み書きオブジェクト権限をtsukaに与える。

GRANT READ, WRITE ON DIRECTORY repository TO tsuka

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

オブジェクト権限をロールに付与するSQLの構文を次に示す。

GRANT object-privilege ON object TO role
GRANT object-privilege ON object TO role WITH GRANT OPTION
GRANT object-privilege ON schema.object TO role
GRANT object-privilege ON schema.object TO role WITH GRANT OPTION
object-privilege
付与するオブジェクト権限を指定する。カンマで区切って、複数のオブジェクト権限を指定できる。
schema
オブジェクトが存在するスキーマを指定する。自分のスキーマにあるオブジェクトの場合は、スキーマの指定を省略できる。
object
権限の対象となるオブジェクトを指定する。
role
オブジェクト権限を付与するロールを指定する。カンマで区切って、複数のロールを指定できる。
WITH ADMIN OPTION
オブジェクト権限を与えられたロールが、そのオブジェクト権限をさらに他のユーザやロールへ与えることをできるようにする。

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

ロールをユーザに付与するSQLの構文を次に示す。

GRANT role TO user
GRANT role TO user IDENTIFIED BY password
GRANT role TO user WITH ADMIN OPTION
GRANT role TO user IDENTIFIED BY password WITH ADMIN OPTION
role
付与するロールを指定する。カンマで区切って、複数のロールを指定できる。
user
ロールを付与するユーザを指定する。カンマで区切って、複数のユーザを指定できる。

ユーザに PUBLIC を指定すると、すべてのユーザにシステム権限が付与される。

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

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

SQL> CREATE ROLE customerservice;
SQL> GRANT SELECT ON customertable TO cutomerservice;
SQL> GRANT customerservice TO satoh;

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

SQL> GRANT CONNECT TO TSUKAMOTO;

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

SQL> GRANT RESOURCE TO TSUKAMOTO;

ロールをロールに付与する

ロールをロールに付与するSQLの構文を次に示す。

GRANT role TO role1
GRANT role TO role1 WITH ADMIN OPTION

関連SQL