すべてのプロダクト
Search
ドキュメントセンター

PolarDB:システム権限

最終更新日:Oct 28, 2025

Oracle データベースから移行する場合や、大規模な権限管理を行う場合、各ユーザーにオブジェクトやスキーマへのアクセス権限を付与するのは面倒なプロセスです。このプロセスを簡素化するために、PolarDBOracle と互換性のあるシステム権限フレームワークを提供します。単一のコマンドで、すべてのテーブルやビューなど、あるクラスのオブジェクトに対するグローバルな権限をユーザーに付与できます。これにより、データベースの操作と管理の効率が向上します。

適用性

お使いの PolarDB for PostgreSQL (Compatible with Oracle) クラスターのマイナーエンジンバージョンが 2.0.14.18.37.0 以降である必要があります。

説明

コンソールでマイナーエンジンバージョン番号を表示するか、SHOW polardb_version; 文を実行してバージョンを確認できます。クラスターがバージョン要件を満たしていない場合は、マイナーエンジンバージョンをアップグレードしてください。

システム権限の有効化と使用

このセクションでは、機能の有効化、ユーザーの作成、権限の付与、権限の検証というプロセス全体について説明します。

ステップ 1: システム権限機能を有効にする

システム権限機能は、デフォルトで無効になっています。この機能を使用するには、PolarDB コンソール[設定と管理] > [パラメーター]ページに移動してpolar_enable_system_privilege パラメーターを有効にする必要があります。

ステップ 2: システム権限を付与する

前提条件

システム権限の GRANT 文を実行できるのは、次の 3 種類のユーザーのみです。

  • 特権アカウント

  • GRANT ANY PRIVILEGE 権限が付与された標準アカウント

  • WITH ADMIN OPTION 句でシステム権限を付与された標準アカウント。このアカウントは、自身が保持する特定の権限のみを付与できます。

構文

GRANT sys_priv1 [, sys_priv2 ...] TO my_user_or_role1 [, my_user_or_role2 ...] [ WITH ADMIN OPTION ];
  • 一度に 1 つ以上のユーザーまたはロールに 1 つ以上のシステム権限を付与できます。

  • システム権限 sys_priv にはいくつかの種類があります。詳細については、「システム権限」をご参照ください。

  • WITH ADMIN OPTION 句を指定すると、被付与者は他のユーザーまたはロールに権限を付与できます。

開発者 dev_user に、任意のスキーマでテーブルを作成し、テーブルをクエリする権限を付与します。

  1. テスト用に標準アカウントを作成します。

    CREATE USER dev_user WITH PASSWORD 'Your_Secure_Password123';
  2. dev_user に、スキーマをまたいでテーブルを作成およびクエリするシステム権限を付与します。

    GRANT CREATE ANY TABLE, SELECT ANY TABLE TO dev_user;
  3. (オプション) dev_user がこれらの権限を他のユーザーに付与できるようにする場合は、WITH ADMIN OPTION 句を追加します。

    -- dev_user に権限を付与し、他のユーザーへの権限付与を許可します。
    GRANT CREATE ANY TABLE, SELECT ANY TABLE TO dev_user WITH ADMIN OPTION;

ステップ 3: 権限を検証する

dev_user に付与された権限があることを確認します。

  1. dev_user ユーザーとしてデータベースに再接続します。

  2. 所有していないスキーマにテーブルを作成し、データを挿入してみます。

    CREATE TABLE public.my_test_table (id INT);
    INSERT INTO public.my_test_table VALUES (1);
  3. テーブルをクエリして SELECT ANY TABLE 権限を検証します。

    SELECT * FROM public.my_test_table;

    期待される出力は次のとおりです。

     id 
    ----
      1

上記の操作がすべて成功した場合、システム権限は有効です。

ステップ 4: 権限の管理とクエリ

付与されたシステム権限を表示または取り消します。

権限のクエリ

  • DBA_SYS_PRIVS ビューをクエリして、すべてのユーザーのシステム権限を確認します。

    説明

    特定のユーザーをクエリする場合は、ユーザー名を大文字に変換してください。

    -- この文は特権アカウントとして実行します。
    SELECT GRANTEE, PRIVILEGE, ADMIN_OPTION FROM DBA_SYS_PRIVS WHERE GRANTEE = 'DEV_USER';

    期待される出力は次のとおりです。

     grantee  |    privilege     | admin_option 
    ----------+------------------+--------------
     DEV_USER | CREATE ANY TABLE | YES
     DEV_USER | SELECT ANY TABLE | YES
  • USER_SYS_PRIVS ビューで現在のユーザーのシステム権限を表示できます。

    -- dev_user によって実行
    SELECT PRIVILEGE, ADMIN_OPTION FROM USER_SYS_PRIVS;

    期待される出力:

        privilege     | admin_option 
    ------------------+--------------
     CREATE ANY TABLE | YES
     SELECT ANY TABLE | YES

結果では、grantee は権限が付与されたユーザーまたはロールです。privilege は権限の名前です。admin_optionYES の場合、被付与者は他のユーザーまたはロールに権限を付与できます。

権限の取り消し

構文

REVOKE sys_priv1 [, sys_priv2 ...] FROM my_user_or_role1 [, my_user_or_role2 ...];

REVOKE コマンドを使用して、ユーザーからシステム権限を取り消します。

-- この文は特権アカウントとして実行します。
REVOKE CREATE ANY TABLE, SELECT ANY TABLE FROM dev_user;

システム権限

次の表に、PolarDB でサポートされているシステム権限とその機能を示します。

カテゴリ

権限名

許可される操作

DATABASE LINKS

CREATE DATABASE LINK, CREATE PUBLIC DATABASE LINK

プライベートまたはパブリック DBLink を作成します。PolarDB はこれらを区別しません。

ALTER DATABASE LINK, ALTER PUBLIC DATABASE LINK

プライベートまたはパブリック DBLink を変更します。PolarDB はこれらを区別しません。

DROP PUBLIC DATABASE LINK

プライベートまたはパブリック DBLink を削除します。

DIRECTORIES

CREATE ANY DIRECTORY

ディレクトリを作成します。

INDEXES

CREATE ANY INDEX

任意のユーザースキーマにインデックスを作成します。

ALTER ANY INDEX

任意のユーザースキーマのインデックスを変更します。

DROP ANY INDEX

任意のユーザースキーマのインデックスを削除します。

MATERIALIZED VIEWS

CREATE MATERIALIZED VIEW

ユーザー自身のスキーマにマテリアライズドビューを作成します。

CREATE ANY MATERIALIZED VIEW

任意のユーザースキーマにマテリアライズドビューを作成します。

ALTER ANY MATERIALIZED VIEW

任意のユーザースキーマのマテリアライズドビューを変更します。

DROP ANY MATERIALIZED VIEW

任意のユーザースキーマのマテリアライズドビューを削除します。

OPERATORS

CREATE OPERATOR

ユーザー自身のスキーマにオペレーターを作成します。

CREATE ANY OPERATOR

任意のユーザースキーマにオペレーターを作成します。

PRIVILEGES

GRANT ANY PRIVILEGE

任意のシステム権限を付与します。

PROCEDURES

CREATE PROCEDURE

ユーザー自身のスキーマにストアドプロシージャ、関数、およびパッケージを作成します。

CREATE ANY PROCEDURE

任意のユーザースキーマにストアドプロシージャ、関数、およびパッケージを作成します。

ROLES & USERS

CREATE ROLE, CREATE USER

ユーザーまたはロールを作成します。PolarDB は権限検証のためにこれらを区別しません。

ALTER ANY ROLE, ALTER USER

ユーザーまたはロールを変更します。

DROP ANY ROLE, DROP USER

ユーザーまたはロールを削除します。

GRANT ANY ROLE

ユーザーまたは別のロールにロールを付与します。

SEQUENCES

CREATE SEQUENCE

ユーザー自身のスキーマにシーケンスを作成します。

CREATE ANY SEQUENCE

任意のユーザースキーマにシーケンスを作成します。

ALTER ANY SEQUENCE

任意のユーザースキーマのシーケンスを変更します。

DROP ANY SEQUENCE

任意のユーザースキーマのシーケンスを削除します。

SYNONYMS

CREATE SYNONYM

ユーザー自身のスキーマにシノニムを作成します。

CREATE ANY SYNONYM

任意のユーザースキーマにシノニムを作成します。

CREATE PUBLIC SYNONYM

パブリックシノニムを作成します。

DROP ANY SYNONYM

任意のユーザースキーマのシノニムを削除します。

DROP PUBLIC SYNONYM

パブリックシノニムを削除します。

TABLES

CREATE TABLE

ユーザー自身のスキーマにテーブルを作成します。

CREATE ANY TABLE

任意のユーザースキーマにテーブルを作成します。

ALTER ANY TABLE

任意のユーザースキーマのテーブルまたはビューを変更します。

DROP ANY TABLE

任意のユーザースキーマのテーブルを削除または切り捨て (TRUNCATE) ます。

COMMENT ANY TABLE

任意のユーザースキーマのテーブル、ビュー、およびマテリアライズドビューにコメントを追加します。

SELECT ANY TABLE

任意のユーザースキーマのテーブル、ビュー、およびマテリアライズドビューをクエリします。

INSERT ANY TABLE

任意のユーザースキーマのテーブルに行を挿入します。

UPDATE ANY TABLE

任意のユーザースキーマのテーブルの行を更新します。

DELETE ANY TABLE

任意のユーザースキーマのテーブルから行を削除します。

TRIGGERS

CREATE TRIGGER

  • ユーザー自身のスキーマに DML トリガーを作成します。権限チェックは、トリガーが存在するテーブルのスキーマに対して実行されます。

  • 任意のユーザースキーマにシステムトリガーを作成します。

CREATE ANY TRIGGER

任意のユーザースキーマに DML トリガーまたはシステムトリガーを作成します。

ADMINISTER DATABASE TRIGGER

データベースレベルのシステムトリガーを作成します。これには、CREATE TRIGGER または CREATE ANY TRIGGER 権限も必要です。

TYPES

CREATE TYPE

ユーザー自身のスキーマにタイプを作成します。

CREATE ANY TYPE

任意のユーザースキーマにタイプを作成します。

VIEWS

CREATE VIEW

ユーザー自身のスキーマにビューを作成します。

CREATE ANY VIEW

任意のユーザースキーマにビューを作成します。

DROP ANY VIEW

任意のユーザースキーマのビューを削除します。