GRANTはユーザやロールに権限またはロールを付与するSQL文である。
GRANT privilege [, ...] TO user [, ...] [ IDENTIFIED BY password ] [ WITH ADMIN OPTION ]
「ORA-01045: user TSUKAMOTO lacks CREATE SESSION privilege; login denied」の対処として、ユーザーにシステム権限を付与する例を示す。
SQL> GRANT CREATE SESSION TO TSUKAMOTO;
付与するシステム権限に「ALL PRIVILEGES」を指定すると、すべてのシステム権限がユーザに付与される。
SQL> GRANT ALL PRIVILEGES TO TSUKAMOTO;
SQL> GRANT CREATE SESSION TO inoue, tsukamoto;
ユーザに PUBLIC を指定すると、すべてのユーザにシステム権限が付与される。
ロールを付与する。
SQL> GRANT CONNECT TO TSUKAMOTO;
「ORA-01950: 表領域'USERS'に対する権限がありません」の対処として、ユーザーにシステム権限を付与する例を示す。
SQL> GRANT UNLIMITED TABLESPACE TO TSUKAMOTO;
または、ロールを付与する。
SQL> GRANT RESOURCE TO TSUKAMOTO;
GRANT system-privilege TO role [ WITH ADMIN OPTION ]
すべてのシステム権限をロールに付与するSQLの構文を次に示す。
GRANT ALL PRIVILEGES TO role
GRANT ALL PRIVILEGES TO role WITH ADMIN OPTION
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
{オブジェクト権限名 | ALL [ PRIVILEGES ] } [ (列名 [ , ... ] ) ]
オブジェクトを指定する。
ユーザに PUBLIC を指定すると、すべてのユーザにオブジェクト権限が付与される。
ディレクトリ・データベース・オブジェクトに関するオブジェクト権限を付与する場合の構文を次に示す。
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
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
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
ユーザに PUBLIC を指定すると、すべてのユーザにシステム権限が付与される。
ユーザにロールを割り当てる例を次に示します。
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;
GRANT role TO role1
GRANT role TO role1 WITH ADMIN OPTION