PL/SQLを使用してユーザーに権限を割り当てる方法は?

PL/SQLでGRANT文を使用すると、ユーザーに権限を割り当てることができます。GRANT文は特定の権限をユーザー、ロール、またはパブリックロールに許可する場合に使用されます。

GRANT文の一般構文は以下のとおりです。

権限名 [, 権限名]…を対象名に
{被付与者名 | PUBLIC} [, {被付与者名 | PUBLIC}]…に付与する
[WITH GRANT OPTION]

なお、privilege_nameには付与する権限、object_nameには対象とするオブジェクト(例:テーブル、ビュー、ストアードプロシージャなど)、grantee_nameには権限の付与先ユーザーまたはロール名を指定します。PUBLICは全ユーザーまたはロールへの付与、WITH GRANT OPTIONは権限の再付与を可能にします。

以下に例を紹介します。

employeesテーブルのSELECT、INSERT、UPDATE権限をjohn、maryに付与する

上記の例は、employeesテーブルに対して、johnとmaryというユーザーにSELECT、INSERT、UPDATE権限を付与しています。

さらに、ALTER USERステートメントを使用して、特定の権限をユーザーに付与できます。以下にALTER USERステートメントの一般的な構文を示します。

ALTER USER ユーザ名
GRANT 権限[, 権限]…

ここで、usernameは権限を割り当てるユーザー名、privilegeは付与する権限名です。

一例を記す。

ALTER USER john
GRANT CREATE SESSION, CREATE TABLE;

上の例では、ユーザー「ジョン」に「CREATE SESSION」と「CREATE TABLE」の権限を許可します。

権限の配分は、それに関わる権限を持つユーザーかロールのみが行えることに留意してください。そのため、必要な権限を持つユーザーとして付与ステートメントを実行する必要があるかもしれません。

bannerAds