データベースオブジェクト、ロールメンバーシップ、またはシステムレベルの権限を付与します。
構文
オブジェクト権限 (テーブル、ビュー、シーケンス、またはプログラム):
GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES }
[,...] | ALL [ PRIVILEGES ] }
ON tablename
TO { username | groupname | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
GRANT { { INSERT | UPDATE | REFERENCES } (column [, ...]) }
[, ...]
ON tablename
TO { username | groupname | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
GRANT { SELECT | ALL [ PRIVILEGES ] }
ON sequencename
TO { username | groupname | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON FUNCTION progname
( [ [ argmode ] [ argname ] argtype ] [, ...] )
TO { username | groupname | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON PROCEDURE progname
[ ( [ [ argmode ] [ argname ] argtype ] [, ...] ) ]
TO { username | groupname | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON PACKAGE packagename
TO { username | groupname | PUBLIC } [, ...]
[ WITH GRANT OPTION ]ロールメンバーシップ:
GRANT role [, ...]
TO { username | groupname | PUBLIC } [, ...]
[ WITH ADMIN OPTION ]システム権限:
GRANT { CONNECT | RESOURCE | DBA } [, ...]
TO { username | groupname } [, ...]
[ WITH ADMIN OPTION ]
GRANT CREATE [ PUBLIC ] DATABASE LINK
TO { username | groupname }
GRANT DROP PUBLIC DATABASE LINK
TO { username | groupname }
GRANT EXEMPT ACCESS POLICY
TO { username | groupname }パラメーター
| パラメーター | 説明 |
|---|---|
SELECT | テーブル、ビュー、またはシーケンスから行の読み取りを許可します。 |
INSERT | テーブルに行の挿入を許可します。 |
UPDATE | テーブル内の行の更新を許可します。 |
DELETE | テーブルから行の削除を許可します。 |
REFERENCES | テーブルまたは特定カラムを参照する外部キー制約の作成を許可します。 |
EXECUTE | 関数、プロシージャ、またはパッケージの呼び出しを許可します。 |
ALL [PRIVILEGES] | オブジェクトタイプに適用可能なすべての権限を付与します。PRIVILEGES はオプションです。 |
tablename | 権限を付与するテーブルまたはビュー。 |
sequencename | 権限を付与するシーケンス。 |
progname | 関数またはプロシージャの名前。 |
packagename | パッケージの名前。 |
username | 権限を受け取るユーザー。 |
groupname | 権限を受け取るグループ。 |
PUBLIC | すべてのユーザーに権限を付与します。 |
WITH GRANT OPTION | 被付与者が同じ権限を他のユーザーに付与することを許可します。PUBLIC には付与できません。 |
WITH ADMIN OPTION | 被付与者が他のユーザーにロールを付与することを許可します。 |
CONNECT | ユーザーがデータベースに接続することを許可する Oracle互換の組み込みロール。 |
RESOURCE | ユーザーがデータベースオブジェクトを作成することを許可する Oracle互換の組み込みロール。 |
DBA | 完全な管理権限を持つ Oracle互換の組み込みロール。 |
説明
GRANT には3種類のバリアントがあります。
オブジェクト権限: テーブル、ビュー、シーケンス、関数、プロシージャ、またはパッケージに対する特定の権限 (
SELECT、INSERT、UPDATE、DELETE、REFERENCES、またはEXECUTE) を、ユーザー、グループ、またはすべてのユーザー (PUBLIC) に付与します。ロールメンバーシップ: ユーザーまたはグループをロールのメンバーとして追加し、ロールの権限を継承させます。
システム権限: Oracle互換のシステムロール (
CONNECT、RESOURCE、DBA) や、データベースリンクの作成または削除、アクセスポリシーの免除などの特定のシステムレベルの権限を付与します。
ユーザー、グループ、およびロール
PolarDB for PostgreSQL(Oracle互換) では、ユーザーとグループはロールと呼ばれる単一のエンティティタイプに統合されています。
ユーザーは、
LOGIN属性を持つロールです。セッションを作成し、アプリケーションに接続できます。グループは、
LOGIN属性を持たないロールです。セッションを作成したり、アプリケーションに接続したりすることはできません。
ロールは1つ以上の他のロールのメンバーになることができ、ユーザーはユーザーとグループの両方に属することができ、一般的な多層階層を形成します。ユーザー名とグループ名は同じ名前空間を共有するため、GRANT はそれらを区別しません。構文は両方で同じです。
注意事項
不十分な付与オプションを持つ
ALL PRIVILEGES: オブジェクトに対して部分的な付与オプションのみを保持している場合、GRANT ALL PRIVILEGESは付与オプションを持つ権限のみを付与し、残りについては警告を発します。直ちに失敗することはありません。カラムレベルとテーブルレベルの権限: ユーザーは、カラムレベルまたはテーブルレベルのいずれかで権限を保持している場合、カラムに対して
INSERTまたはUPDATEを実行できます。カラムレベルの権限を取り消しても、そのカラムに対する既存のテーブルレベルの権限は削除されません。PUBLICとWITH GRANT OPTION: 付与オプションはPUBLICに付与できません。名前付きロールのみが付与オプションを受け取ることができます。非所有者による付与: オブジェクトを所有していないが、付与オプションを持ついくつかの権限を保持している場合、
GRANTはそれらの権限に対してのみ成功します。付与オプションを全く保持していない場合、コマンドは失敗します。
例
テーブル権限の付与
ユーザー alice に orders テーブルに対する SELECT および INSERT 権限を付与します。
GRANT SELECT, INSERT ON orders TO alice;この付与後、alice は orders の行を読み取り、挿入できますが、更新または削除はできません。
カラムレベルの権限の付与
ユーザー bob に employees テーブルの特定カラムに対する UPDATE 権限を付与します。
GRANT UPDATE (salary, department_id) ON employees TO bob;bob は salary と department_id を更新できますが、他のカラムは更新できません。
再付与権限付きの付与
ユーザー carol に products テーブルに対する SELECT 権限を付与し、彼女が同じ権限を他のユーザーに付与することを許可します。
GRANT SELECT ON products TO carol WITH GRANT OPTION;ロールメンバーシップの付与
ユーザー dave を reporting_role ロールのメンバーとして追加します。
GRANT reporting_role TO dave;dave は reporting_role が保持するすべての権限を継承します。
システムロールの付与
ユーザー eve に CONNECT および RESOURCE システムロールを付与します。
GRANT CONNECT, RESOURCE TO eve;データベースリンク権限の付与
ユーザー frank がパブリックデータベースリンクを作成することを許可します。
GRANT CREATE PUBLIC DATABASE LINK TO frank;