REVOKE (データベース権限) ステートメント

この形式の REVOKE ステートメントは、データベース全体に適用される権限を取り消します。

呼び出し

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

許可

ACCESSCTRL、CREATE_SECURE_OBJECT、DATAACCESS、DBADM、または SECADM 権限を取り消すには、SECADM 権限が必要です。
注: Db2 11.5.7 以降では、CREATE_EXTERNAL_ROUTINE または CREATE_NOT_FENCED_ROUTINE 権限、SYSADM、SECADM、または ACCESSCTRL 権限を取り消す必要があります。

他の権限を取り消すには、ACCESSCTRL または SECADM 権限が必要です。

構文

Read syntax diagramSkip visual syntax diagramREVOKE,ACCESSCTRLBINDADDCONNECTCREATETABCREATE_EXTERNAL_ROUTINECREATE_NOT_FENCED_ROUTINECREATE_SECURE_OBJECTDBADMDATAACCESSEXPLAINIMPLICIT_SCHEMALOADQUIESCE_CONNECTSECADMSQLADMWLMADMON DATABASEFROM ,USERGROUPROLEauthorization-namePUBLIC BY ALL

説明

ACCESSCTRL
大部分のデータベース権限とオブジェクト特権の付与または取り消しを行うための権限を取り消します。
BINDADD
パッケージを作成する権限を取り消します。 パッケージの作成者には自動的にそのパッケージに対する CONTROL 特権が与えられ、後でその BINDADD 権限が取り消されたとしてもその特権はそのまま保持されます。

DBADM 権限も取り消さない限り、 DBADM 権限を与えられている authorization-name から BINDADD 権限を取り消すことはできません。

CONNECT
データベースにアクセスする権限を取り消します。

ユーザーから CONNECT 権限を取り消しても、 そのユーザーに付与されていたデータベースのオブジェクトに対する特権には影響しません。 後で再度そのユーザーに CONNECT 権限が付与された場合でも、以前に持っていた特権は、明示的に取り消さない限り、依然としてすべて有効です。

DBADM 権限も取り消さない限り、 DBADM 権限を与えられている authorization-name から CONNECT 権限を取り消すことはできません (SQLSTATE 42504)。

CREATETAB
表を作成する権限を取り消します。 表の作成者には自動的にその表に対する CONTROL 特権が与えられ、後で CREATETAB 権限が取り消されたとしても、その特権はそのまま保持します。

DBADM 権限も取り消さない限り、 DBADM 権限を与えられている authorization-name から CREATETAB 権限を取り消すことはできません (SQLSTATE 42504)。

CREATE_EXTERNAL_ROUTINE
外部ルーチンを登録する権限を取り消します。 外部ルーチンを登録し終えると、それ以降にそのルーチンを登録した許可 ID から CREATE_EXTERNAL_ROUTINE が取り消されても、そのまま保持されます。

DBADM または CREATE_NOT_FENCED_ROUTINE 権限も取り消すのでない限り、 DBADM または CREATE_NOT_FENCED_ROUTINE 権限を与えられているauthorization-name から CREATE_EXTERNAL_ROUTINE 権限を取り消すことはできません (SQLSTATE 42504)。

CREATE_NOT_FENCED_ROUTINE
データベース・マネージャーの処理の中で実行するルーチンを登録する権限を取り消します。 ルーチンが非 fenced としていったん登録されると、それ以降にそのルーチンを登録した許可 ID から CREATE_NOT_FENCED_ROUTINE が取り消されるとしても、そのまま実行が続けられます。

DBADM 権限も取り消さない限り、 DBADM 権限を与えられている authorization-name から CREATE_NOT_FENCED_ROUTINE 権限を取り消すことはできません (SQLSTATE 42504)。

CREATE_SECURE_OBJECT
セキュア・トリガーおよびセキュア関数を作成する権限を取り消します。 そのようなオブジェクトのセキュア属性を変更する権限も取り消します。
DATAACCESS
データにアクセスする権限を取り消します。
DBADM
DBADM 権限を取り消します。

DBADM 権限を PUBLIC から取り消すことはできません (PUBLIC に対して与えることができないので、 当然取り消しもできません)。

注意:
DBADM 権限の取り消しによって、データベース内のオブジェクトに対して authorization-name が持っていた特権が自動的に取り消されることはありません。
EXPLAIN
データへアクセスすることなく、静的ステートメントおよび動的ステートメントの Explain 情報の取り出し、準備、および記述を行うための権限を取り消します。
IMPLICIT_SCHEMA
スキーマを暗黙的に作成する権限を取り消します。 これは、既存のスキーマにオブジェクトを作成する権限、または CREATE SCHEMA ステートメントを処理する権限には影響ありません。

IMPLICIT_SCHEMA 権限は、DBADM 権限も取り消さない限り、DBADM 権限を保持している authorization-name から取り消すことはできません (SQLSTATE 42504)。

LOAD
このデータベースで LOAD を実行する権限を取り消します。
QUIESCE_CONNECT
静止中のデータベースにアクセスする権限を取り消します。
SECADM
データベース・セキュリティーを管理する権限を取り消します。
SQLADM
SQL ステートメントをモニターおよび調整する権限を取り消します。
WLMADM
ワークロード・マネージャー・オブジェクトを管理する権限を取り消します。
FROM
権限を誰から取り消すかを指定します。
ユーザー
authorization-name がユーザーであることを指定します。
GROUP
authorization-name がグループ名であることを指定します。
ROLE
authorization-name がロール名であることを指定します。
権限名
1 つ以上のユーザー、グループ、またはロールの許可 ID のリストを指定します。

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

PUBLIC
PUBLIC から該当の権限を取り消します。
BY ALL
指定された個々の特権を、その付与者にかかわらず、 それらの特権を明示的に付与されたユーザーのうち指定された人から取り消します。 この振る舞いはデフォルトです。

ルール

セキュリティー管理者の必須: データベースには、SECADM 権限を持つタイプ USER の許可 ID が少なくとも 1 つなければなりません。 SECADM 権限は、すべてのユーザー許可 ID から取り消すことができません (SQLSTATE 42523)。

  • 指定したそれぞれの authorization-name に関して、USER、GROUP、ROLE のいずれも指定されていない場合には、次のようになります。
    • 被認可者が authorization-name である SYSCAT.DBAUTH カタログ・ビュー内の指定されたオブジェクトのすべての行について、以下が該当します。
      • すべての行の GRANTEETYPE が「U」の場合、USER であると見なされます。
      • すべての行の GRANTEETYPE が「G」の場合、GROUP であると見なされます。
      • すべての行の GRANTEETYPE が「R」の場合、ROLE であると見なされます。
      • すべての行の GRANTEETYPE の値が同じでない場合、エラーが戻されます (SQLSTATE 56092)。

  • 特定の特権の取り消しにより、アクションを実行する権限が取り消されるとは限りません。 PUBLIC、グループ、またはロールが他の特権を持っている場合、またはユーザーがより高いレベルの権限 (例えば DBADM) を持っている場合には、ユーザーは作業を続行できます。
  • 代替構文: Db2® の以前のバージョンおよび他のデータベース製品との互換性のために、以下の代替の構文がサポートされています。
    • CREATE_NOT_FENCED_ROUTINE の代わりに CREATE_NOT_FENCED を指定できます。
    • DATABASE の代わりに SYSTEM を指定できます。
    • NOT INCLUDING DEPENDENT PRIVILEGES は、代替構文として指定できます。

  • 例 1: USER6 はユーザーであり、グループではない場合に、 ユーザー USER6 の表を作成する特権を取り消します。
       REVOKE CREATETAB ON DATABASE FROM USER6
  • 例 2: D024 という名前のグループのデータベースに対する BINDADD 権限を取り消します。 SYSCAT.DBAUTH カタログ・ビューには、このグループの行として 2 つの行があります。その 1 つでは GRANTEETYPE が U、もう 1 つでは GRANTEETYPE が G になっています。
       REVOKE BINDADD ON DATABASE FROM GROUP D024
    この場合、GROUP キーワードの指定は必須です。指定しないとエラーになります (SQLSTATE 56092)。
  • 例 3: ユーザー Walid のセキュリティー管理者権限を取り消します。
       REVOKE SECADM ON DATABASE FROM USER Walid
  • 例 4: SECADM 権限を持つユーザーが、ユーザー Haytham の CREATE_SECURE_OBJECT 権限を取り消します。
       REVOKE CREATE_SECURE_OBJECT ON DATABASE FROM USER HAYTHAM