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 privilege ON [schema.]object TO user [WITH GRANT OPTION]
GRANT SELECT ON object TO user WITH HIERARCHY OPTION
{オブジェクト権限名 | ALL [ PRIVILEGES ] } [ (列名 [ , ... ] ) ]
表に対するSELECTとUPDATEのオブジェクト権限をユーザーに与える。
SQL> GRANT SELECT, UPDATE ON emp TO tsukamoto;
表に対するすべてのオブジェクト権限をユーザーに与える。
SQL> GRANT ALL PRIVILEGES ON emp TO tsukamoto;
ユーザに PUBLIC を指定すると、すべてのユーザーにオブジェクト権限が付与される。
表に対するSELECTオブジェクト権限をすべてのユーザーに与える。
SQL> GRANT SELECT ON emp TO PUBLIC;
表に対するSELECTオブジェクト権限をユーザーに与える。そのユーザーは他ユーザーにもSELECTオブジェクト権限を与えられる。
SQL> GRANT SELECT ON emp TO tsukamoto WITH GRANT OPTION;
ディレクトリ・データベース・オブジェクトに関するオブジェクト権限を付与する場合の構文を次に示す。
GRANT {READ|WRITE}[,... ] ON DIRECTORY directory TO {ユーザ名|ロール名|PUBLIC}[,...] [WITH GRANT OPTION];
directory にはディレクトリ・データベース・オブジェクトの名前を指定する。
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