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