GRANT (スキーマ特権) ステートメント

この形式の GRANT ステートメントは、スキーマに対する特権を付与します。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込んだり、動的 SQL ステートメントを使用して発行したりすることができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。

許可

ステートメントの許可 ID によって保持されている特権には、少なくとも以下のいずれかの権限が含まれていなければなりません。
  • schema-name に対する指定された特権ごとに WITH GRANT OPTION
  • schema-name に対するスキーマ ACCESSCTRL 権限
  • ACCESSCTRL または SECADM 権限
例外:
  • SYS で始まるスキーマ名に対する以下の特権を付与できるのは、ACCESSCTRL または SECADM のある許可 ID を持っている場合に限られます。
    • SYS で始まるスキーマ名に対する SELECTIN 特権。例えば、SYSIBM、SYSCAT、SYSFUN、SYSSTAT、SYSPROC、SYSXML、SYSIBMADM、SYSIBMINTERNAL、SYSIBMTS。
    • スキーマ SYSPUBLIC に対する特権 SELECTIN、CREATEIN、DROPIN。CREATEIN 特権を付与するとユーザーは公開の別名を作成でき、DROPIN 特権を付与するとユーザーは公開の別名をドロップできます。
  • SYS で始まるスキーマ名に対する他の特権や権限は、どのユーザーも付与できません (SQLSTATE 42501)。
  • スキーマの ACCESSCTRL 権限を付与できるのは、SECADM 権限またはデータベースの ACCESSCTRL 権限を持っているユーザーに限られます。
  • PUBLIC に対しては、直接的にも間接的にもスキーマ権限 (SCHEMAADM、ACCESSCTRL、DATAACCESS、LOAD) を付与できません。

構文

構文図を読む構文図をスキップする GRANT ALLPRIVILEGES,ACCESSCTRLALTERINCREATEINDATAACCESSDELETEINDROPINEXECUTEININSERTINLOADSCHEMAADMSELECTINUPDATEIN ON SCHEMAschema-nameCURRENT SCHEMA TO ,USERGROUPROLEauthorization-namePUBLIC WITH GRANT OPTION

説明

ALL または ALL PRIVILEGES
ON 節で指定されているスキーマに対するすべてのスキーマ特権を付与します。

ALL の指定がない場合、 特権のリストに示されているキーワードの 1 つまたは複数を指定する必要があります。

ACCESSCTRL
スキーマに対するアクセス制御権限を付与します。 スキーマ ACCESSCTRL 権限の保有者は、次のことが可能です。
  • スキーマで定義されたオブジェクトでの、特権の付与および取り消し。
  • スキーマ ACCESSCTRL 自体を除くすべてのスキーマ・レベルの特権の付与および取り消し。
スキーマ ACCESSCTRL 権限を PUBLIC に付与することはできません (SQLSTATE 42508)。
ALTERIN
スキーマ内のすべてのオブジェクトの変更、またはコメント付けのための特権を与えます。 明示的にスキーマを作成した所有者は、ALTERIN 特権が自動的に与えられます。
CREATEIN
スキーマにオブジェクトを作成する特権を与えます。 オブジェクトの作成に必要なその他の権限または特権 (CREATETAB など) は、これを指定しても必要です。 明示的に作成されたスキーマの所有者には、自動的に CREATEIN 特権が付与されます。 暗黙的に作成されたスキーマの CREATEIN 特権は、PUBLIC に自動的に付与されます。
DATAACCESS
スキーマ内のデータにアクセスする権限を付与します。 DATAACCESS 権限の保有者は、以下の操作を実行できます。
  • スキーマで定義された表またはビューでの、データの選択、挿入、更新、削除、およびロード
  • スキーマに定義されているパッケージの実行
  • スキーマに定義されている、監査ルーチン以外のいずれかのルーチンの実行

DATAACCESS 権限を PUBLIC に付与することはできません (SQLSTATE 42508)。

DELETEIN

スキーマ内の表オブジェクトに含まれているデータを削除する特権を与えます。

DROPIN
スキーマ内のオブジェクトをドロップする特権を与えます。 明示的に作成されたスキーマの所有者は、DROPIN 特権を自動的に与えられます。
EXECUTEIN
スキーマで定義されるユーザー定義の関数、メソッド、プロシージャー、パッケージ、モジュールを (既存のものも今後定義されるものも) すべて実行する特権を付与します。
INSERTIN

スキーマで定義される表やビュー (既存のものと今後定義されるもの) すべてに対して行を挿入したり IMPORT ユーティリティーを実行したりする特権を与えます。

LOAD
このスキーマでロードを実行する権限を付与します。この権限を付与されたユーザーは、このスキーマにおいて LOAD ユーティリティーを使用する権利を持ちます。この権限は、デフォルトで SCHEMAADM に付与されます。しかし、ユーザーにスキーマ LOAD 権限しかない (スキーマ DATAACCESS ではない) 場合、そのユーザーには表レベルの特権も必要です。 スキーマ LOAD 特権に加えて、ユーザーには以下のものが必要です。
  • モード INSERT、TERMINATE (直前の LOAD INSERT を終了するため)、または RESTART (直前の LOAD INSERT を再開するため) で LOAD を実行する場合は、その表に対する INSERT 特権またはその表のスキーマに対する INSERTIN 特権。
  • モード REPLACE、TERMINATE (直前の LOAD REPLACE を終了するため)、または RESTART (直前の LOAD REPLACE を再開するため) で LOAD を実行する場合は、その表に対する INSERT および DELETE 特権またはその表のスキーマに対する INSERTIN および DELETEIN 特権。
  • LOAD の一部として例外表を使用する場合は、その例外表に対する INSERT 特権、またはその表のスキーマに対する INSERTIN 特権。
スキーマ LOAD 権限を PUBLIC に付与することはできません (SQLSTATE 42508)。
SCHEMAADM

スキーマ管理者権限を与えます。スキーマ管理者は、スキーマ内のほとんどすべてのオブジェクトに対するほとんどすべての特権を保持します。唯一の例外は、アクセス制御、およびスキーマ・データ・アクセスの各権限に含まれている特権です。

SCHEMAADM 権限を PUBLIC に付与することはできません (SQLSTATE 42508)。

SELECTIN
スキーマで定義される表またはビュー (既存のものと将来定義されるものすべて) から選択する特権を付与します。
UPDATEIN
スキーマで定義される表または更新可能なビュー (既存のものと将来定義されるものすべて) に対して UPDATE ステートメントを使用するための特権を付与します。
ON
SCHEMA schema-name
権限を与える対象のスキーマの名前を指定します。SYS プレフィックスで開始するスキーマに対しては権限を付与できません (SQLSTATE 42501)。
CURRENT SCHEMA
DB2®® 特殊レジスター CURRENT SCHEMA によって示されるスキーマに対して権限が付与されることを指定します。SYS プレフィックスで開始するスキーマに対しては権限を付与できません (SQLSTATE 42501)。
TO
特権を誰に与えるかを指定します。
USER
authorization-name がユーザーであることを指定します。
GROUP
authorization-name がグループ名であることを指定します。
ROLE
authorization-name がロール名であることを指定します。 ロール名は、現行サーバーに存在するものでなければなりません (SQLSTATE 42704)。
authorization-name,...
1 つ以上のユーザー、グループ、またはロールの許可 ID のリストを指定します。

この許可 ID のリストに、このステートメントを発行するユーザーの許可 ID を含めることはできません (SQLSTATE 42502)。

PUBLIC
特権をユーザー (許可 ID) の集合に付与します。 詳細は、『許可、特権、およびオブジェクト所有権』を参照してください。
WITH GRANT OPTION
指定した authorization-name に対し、特権を他のユーザーに与えることを許可します。

規則

  • 指定したそれぞれの authorization-name に関して、USER、GROUP、ROLE のいずれも指定されていない場合には、次のようになります。
    • インスタンスに対して有効なセキュリティー・プラグインによって authorization-name の状況を判別できなければ、エラーが戻されます (SQLSTATE 56092)。
    • authorization-name がデータベースでは ROLE として定義され、有効なセキュリティー・プラグインでは GROUP または USER のいずれかとして定義されている場合には、エラーが戻されます (SQLSTATE 56092)。
    • 有効になっているセキュリティー ・プラグインに従って authorization-name が USER と GROUP の両方として定義されている場合、 エラーが戻されます (SQLSTATE 56092)。
    • 有効になっているセキュリティー ・プラグインに従って authorization-name が USER としてのみ定義されている場合、または未定義の場合、USER であると見なされます。
    • 有効になっているセキュリティー ・プラグインに従って authorization-name が GROUP としてのみ定義されている場合、GROUP であると見なされます。
    • authorization-nameデータベースで ROLE としてのみ定義されている場合には、ROLE であると見なされます。
  • 一般に、GRANT ステートメントはステートメントの許可 ID が与えることを許されている特権の GRANT のみを処理し、 1 つ以上の特権が与えられなかった場合は警告 (SQLSTATE 01007) を戻します。 どのような特権も与えられなかった場合は、エラーが戻されます (SQLSTATE 42501)。 (ステートメントの処理に使用されるパッケージが、 LANGLEVEL を SQL92E または MIA に設定してプリコンパイルされていた場合、付与者が GRANT 操作の対象に対して特権を持っていない場合以外は警告が戻されます (SQLSTATE 01007)。)

Notes®

  • SYSPUBLIC に対する権限付与: 予約済みスキーマの SYSPUBLIC に対して特権を付与することができます。 CREATEIN 特権が付与されると公開の別名を作成でき、DROPIN 特権が付与されると公開の別名をドロップできます。 SELECTIN が付与されると、スキーマで定義された表から選択することができます。
  • SCHEMAADM、スキーマ ACCESSCTRL、スキーマ DATAACCESS、またはスキーマ LOAD のどの権限も、特殊グループ PUBLIC に付与することはできません。 したがって、直接的であれ間接的であれ、role-name が PUBLIC に付与されている場合、スキーマ ACCESSCTRL、SCHEMAADM、スキーマ DATAACCESS、またはスキーマ LOAD の各権限を role-name に付与する操作は失敗します (SQLSTATE 42508)。
    • 以下のステートメントが発行済みの場合、ロール role-name は PUBLIC に直接的に付与されます。
      GRANT ROLE role-name TO PUBLIC
    • 以下のステートメントが発行済みの場合、ロール role-name は間接的に PUBLIC に付与されます。
      GRANT ROLE role-name TO ROLE role-name2
      GRANT ROLE role-name2 TO PUBLIC
  • グループに付与される特権: 以下の許可検査では、グループに付与される権限は使用されません。
    • パッケージ内の静的 DML ステートメント
    • CREATE VIEW ステートメントの処理過程での基本表
    • マテリアライズ照会表の CREATE TABLE ステートメントの処理過程での基本表
    • SQL ルーチンの作成
    • トリガーの作成
  • スキーマ権限 (SCHEMAADM、ACCESSCTRL、DATAACCESS、LOAD) を付与するとき、WITH GRANT OPTION は無視されます。

  • 例 1: スキーマ CORPDATA にオブジェクトを作成する特権を、ユーザー JSINGLETON に与えます。
       GRANT CREATEIN ON SCHEMA CORPDATA TO JSINGLETON
  • 例 2: スキーマ CORPDATA のオブジェクトを作成およびドロップする特権を、ユーザー IHAKES に与えます。
       GRANT CREATEIN, DROPIN ON SCHEMA CORPDATA TO IHAKES