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

ApsaraDB for OceanBase:ユーザー権限

最終更新日:Feb 27, 2025

データ伝送サービスを使用してデータベース間でデータを移行する前に、移行ユーザーまたは同期ユーザーとして、各データソースに対してデータベースユーザーを作成していることを確認してください。これらのユーザーは、ソースとターゲットのデータソースに必要な権限を持っている必要があります。

OceanBase Database の MySQL テナントがソースデータソースとして機能する場合に必要なユーザー権限

OceanBase Database の MySQL テナントがソースとして機能する場合、移行ユーザーまたは同期ユーザーは次の権限を持っている必要があります。

  • ターゲットが Kafka、DataHub、または RocketMQ インスタンスの場合、ユーザーは同期するソースデータベースに対する SELECT 権限を持っている必要があります。

    ターゲットが MySQL データベースまたは OceanBase Database の MySQL テナントの場合、ユーザーは移行するソースデータベースと oceanbase データベースに対する SELECT 権限を持っている必要があります。

    重要

    oceanbase データベースに対する SELECT 権限は、OceanBase Database V4.0.0 以降でのみ必要です。

  • 仮想プライベートクラウド ( VPC ) にデプロイされた OceanBase データベースからの増分同期の 場合、OceanBase データベースの sys テナントにユーザーを作成し、SELECT ON *.* 権限を付与する必要があります。

OceanBase Database の MySQL テナントがターゲットデータソースとして機能する場合に必要なユーザー権限

OceanBase Database の MySQL テナントがターゲットとして機能する場合、移行ユーザーは次の権限を持っている必要があります。

  • ターゲットデータベースに対する CREATECREATE VIEWSELECTINSERTUPDATEALTERINDEX、および DELETE 権限。

    GRANT CREATE,CREATE VIEW,SELECT,INSERT,UPDATE,ALTER,INDEX,DELETE ON <database_name>.* TO '<user_name>';
  • テナント全体に対する SELECT 権限。

    GRANT SELECT ON *.* TO '<user_name>';

OceanBase Database の Oracle テナントがソースデータソースとして機能する場合に必要なユーザー権限

OceanBase Database の Oracle テナントがソースとして機能する場合、次の方法で移行ユーザーまたは同期ユーザーに権限を付与する必要があります。

  • V2.2.70 より前の OceanBase Database の場合、ソースユーザーは GRANT SELECT ON *.* TO <user_name>; 権限を持っている必要があります。

  • OceanBase Database V2.2.70 以降の場合、ソースユーザーは GRANT DBA TO <user_name>; 権限を持っている必要があります。

OceanBase Database の Oracle テナントがターゲットデータソースとして機能する場合に必要なユーザー権限

Oracle データベースから OceanBase Database の Oracle テナントにデータを移行する場合、必要なユーザー権限は OceanBase Database のバージョンによって異なります。

OceanBase Database のバージョン

権限

V2.2.5 または V2.2.3

次の 2 つの方法のいずれかを使用して、移行ユーザーに権限を付与できます。

  • 方法 1

    • 次のステートメントを実行して、移行ユーザーにすべての権限を付与します。この方法は簡単ですが、高レベルの権限が付与されます。

      GRANT ALL PRIVILEGES ON *.* TO <user_name>;
  • 方法 2

    1. OceanBase Database が VPC にデプロイされている 場合、sys テナントのシステムビューに対する システム 権限を移行ユーザーに付与します。

      GRANT SELECT ON SYS.* TO <user_name>;
    2. 業務テーブルに対するあらゆる種類の権限を移行ユーザーに付与します。複数の業務データベースが存在する 場合は、権限を個別に付与します。

      GRANT SELECT, UPDATE, DELETE ON <db_name>.* TO <user_name>;
      GRANT CREATE, INDEX, ALTER ON <db_name>.* TO <user_name>;

V2.2.7 以降

次の 2 つの方法のいずれかを使用して、移行ユーザーに権限を付与できます。

  • 方法 1

    次のステートメントを実行して、データベース管理者 ( DBA ) 権限を移行ユーザーに付与します。この方法は簡単ですが、高レベルの権限が付与されます。

    GRANT DBA TO <user_name>;
  • 方法 2

    業務テーブルに対するあらゆる種類の権限を移行ユーザーに付与します。複数の業務データベースが存在する 場合は、権限を個別に付与します。

    GRANT CONNECT TO <user_name>;
    GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <user_name>;
    GRANT CREATE ANY TABLE, CREATE ANY INDEX, CREATE ANY VIEW, INSERT ANY TABLE, UPDATE ANY TABLE, ALTER ANY TABLE, DELETE ANY TABLE TO <user_name>;

Oracle データベースがソースデータソースとして機能する場合に必要なユーザー権限

このセクションでは、Oracle データベースのさまざまなバージョンでさまざまなロールに必要な権限について説明します。

説明
  • ADG スタンバイデータベースの場合、付与された権限が有効にならない 場合があります。この 場合、スタンバイデータベースで ALTER SYSTEM FLUSH SHARED_POOL; ステートメントを実行して、共有プールをリフレッシュする必要があります。

  • このトピックで説明されているユーザー権限は、最小限の権限ではありません。ユーザーに次の権限を付与する必要があります。SELECT ANY TRANSACTIONSELECT ANY TABLE、および SELECT ANY DICTIONARY。Oracle データベースがソースデータソースとして機能する 場合、セキュリティを向上させるために、移行ユーザーに最小限の権限を付与できます。詳細については、「Oracle データベースがソースとして機能する 場合に必要な最小限の権限」をご参照ください。

12c より前の Oracle データベースバージョンの移行ユーザーの DBA 権限

環境で DBA ロールを移行ユーザーに割り当てることができ、Oracle データベースのバージョンが 12c より前の 場合、次のステートメントを実行して DBA 権限を移行ユーザーに付与します。

GRANT DBA TO <user_name>;

12c より前の Oracle データベースバージョンの移行ユーザーの非 DBA 権限

環境で必要な権限のみを移行ユーザーに付与でき、Oracle データベースのバージョンが 12c より前の 場合、次の操作を実行します。

  1. CONNECT 権限を付与します。

    GRANT CONNECT TO <user_name>;
  2. CREATE SESSIONALTER SESSIONSELECT ANY TRANSACTIONSELECT ANY TABLE、および SELECT ANY DICTIONARY 権限を移行ユーザーに付与します。

    GRANT CREATE SESSION, ALTER SESSION, 
    SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <user_name>;
  3. LOGMINER 権限を移行ユーザーに付与します。

    GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <user_name>;
  4. CREATE TABLE および UNLIMITED TABLESPACE 権限を移行ユーザーに付与します。

    GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <user_name>;
  5. 移行するスキーマの名前が user_name と同じ 場合、次のステートメントを実行します。

    GRANT CREATE SEQUENCE,CREATE VIEW TO <user_name>;

    移行するスキーマの名前が user_name と異なる 場合、次のステートメントを実行します。

    GRANT CREATE ANY TABLE,CREATE ANY INDEX,DROP ANY TABLE,ALTER ANY TABLE,COMMENT ANY TABLE,
    DROP ANY INDEX,ALTER ANY INDEX,CREATE ANY SEQUENCE,ALTER ANY SEQUENCE,DROP ANY SEQUENCE,
    CREATE ANY VIEW,DROP ANY VIEW,INSERT ANY TABLE,DELETE ANY TABLE,UPDATE ANY TABLE TO <user_name>;

    次のステートメントを実行することもできます。

    GRANT CREATE ANY TABLE,CREATE ANY INDEX,DROP ANY TABLE,ALTER ANY TABLE,COMMENT ANY TABLE,
    DROP ANY INDEX,ALTER ANY INDEX,CREATE ANY SEQUENCE,ALTER ANY SEQUENCE,DROP ANY SEQUENCE,
    CREATE ANY VIEW,DROP ANY VIEW TO <user_name>;
    # 移行するテーブルを指定します。
    GRANT DELETE, INSERT, UPDATE ON <database name>.<table name> TO <user_name>;

12c 以降の Oracle データベースバージョンの移行ユーザーの DBA 権限

環境で DBA ロールを移行ユーザーに割り当てることができ、Oracle データベースのバージョンが 12c 以降の 場合、Oracle 12c、18c、または 19c のプラガブル・データベース ( PDB ) を使用するかどうかを判断します。

  • 非 PDB データベースの場合

    1. 次のステートメントを実行して、DBA 権限を移行ユーザーに付与します。

      GRANT DBA TO <user_name>;
    2. 次のステートメントを実行して、SYS.USER$ テーブルに対する読み取り権限を移行ユーザーに付与します。

      GRANT SELECT ON SYS.USER$ TO <user_name>;
  • PDB の場合

    Oracle 12c、18c、または 19c の PDB から OceanBase Database の Oracle テナントにデータを移行する 場合、PDB からデータをプルするために共通のユーザーアカウントが必要です。

    1. 次のステートメントを実行して、CDB$ROOT コンテナーに切り替えます。

      ALTER SESSION SET CONTAINER=CDB$ROOT;

      すべての共通ユーザーは、CDB$ROOT という名前のルートコンテナーとアクセス可能な PDB に接続し、関連する操作を実行できます。

    2. 次のステートメントを実行して、DBA 権限を移行ユーザーに付与します。

      GRANT DBA TO C##XXX CONTAINER=ALL;
    3. 次のステートメントを実行して、SYS.USER$ テーブルに対する読み取り権限を移行ユーザーに付与します。

      GRANT SELECT ON SYS.USER$ TO C##XXX CONTAINER=ALL;

12c 以降の Oracle データベースバージョンの移行ユーザーの非 DBA 権限

環境で必要な権限のみを移行ユーザーに付与でき、Oracle データベースのバージョンが 12c 以降の 場合、次の操作を実行します。

  • 非 PDB データベースの場合

    1. CONNECT 権限を付与します。

      GRANT CONNECT TO <user_name>;
    2. 次のステートメントを実行して、SYS.USER$ テーブルに対する読み取り権限を移行ユーザーに付与します。

      GRANT SELECT ON SYS.USER$ TO <user_name>;
    3. CREATE SESSIONALTER SESSIONSELECT ANY TRANSACTIONSELECT ANY TABLE、および SELECT ANY DICTIONARY 権限を移行ユーザーに付与します。

      GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <user_name>;
    4. LOGMINER 権限を移行ユーザーに付与します。

      GRANT LOGMINING TO <user_name>;
      GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <user_name>;
    5. CREATE TABLE および UNLIMITED TABLESPACE 権限を移行ユーザーに付与します。

      GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <user_name>;
    6. 移行するスキーマの名前が user_name と同じ 場合、次のステートメントを実行します。

      GRANT CREATE SEQUENCE,CREATE VIEW TO <user_name>;

      移行するスキーマの名前が user_name と異なる 場合、次のステートメントを実行します。

      GRANT CREATE ANY TABLE,CREATE ANY INDEX,DROP ANY TABLE,ALTER ANY TABLE,COMMENT ANY TABLE,
      DROP ANY INDEX,ALTER ANY INDEX,CREATE ANY SEQUENCE,ALTER ANY SEQUENCE,DROP ANY SEQUENCE,
      CREATE ANY VIEW,DROP ANY VIEW,INSERT ANY TABLE,DELETE ANY TABLE,UPDATE ANY TABLE TO <user_name>;
  • PDB の場合

    Oracle 12c、18c、または 19c の PDB から OceanBase Database の Oracle テナントにデータを移行する 場合、PDB からデータをプルするために通常のユーザーアカウントが必要です。

    1. CONNECT 権限を付与します。

      GRANT CONNECT TO <C##XXX> CONTAINER=ALL;
    2. 次のステートメントを実行して、SYS.USER$ テーブルに対する読み取り権限を移行ユーザーに付与します。

      GRANT SELECT ON SYS.USER$ TO <C##XXX> CONTAINER=ALL;
    3. CREATE SESSIONALTER SESSIONSELECT ANY TRANSACTIONSELECT ANY TABLE、および SELECT ANY DICTIONARY 権限を移行ユーザーに付与します。

      GRANT CREATE SESSION, ALTER SESSION, 
      SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <C##XXX> CONTAINER=ALL;
    4. LOGMINER 権限を移行ユーザーに付与します。

      GRANT LOGMINING TO <C##XXX> CONTAINER=ALL;
      GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <C##XXX> CONTAINER=ALL;
    5. CREATE TABLE および UNLIMITED TABLESPACE 権限を移行ユーザーに付与します。

      GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <C##XXX> CONTAINER=ALL;
    6. 移行するスキーマの名前が C##XXX と同じ 場合、次のステートメントを実行します。

      GRANT CREATE SEQUENCE,CREATE VIEW TO <C##XXX> CONTAINER=ALL;

      移行するスキーマの名前が C##XXX と異なる 場合、次のステートメントを実行します。

      GRANT CREATE ANY TABLE,CREATE ANY INDEX,DROP ANY TABLE,ALTER ANY TABLE,COMMENT ANY TABLE,
      DROP ANY INDEX,ALTER ANY INDEX,CREATE ANY SEQUENCE,ALTER ANY SEQUENCE,DROP ANY SEQUENCE,
      CREATE ANY VIEW,DROP ANY VIEW,INSERT ANY TABLE,DELETE ANY TABLE,UPDATE ANY TABLE TO <C##XXX> CONTAINER=ALL;

MySQL データベースがソースデータソースとして機能する場合に必要なユーザー権限

  • データベースユーザーは、データの移行元のデータベースに対する読み取り権限を持っている必要があります。MySQL データベースのバージョンが 8.0 の 場合、SHOW VIEW 権限も必要です。

    GRANT SELECT ON <database_name>.* TO '<user_name>';
  • MySQL データベースからの増分同期中は、データベースユーザーは REPLICATION CLIENTREPLICATION SLAVE、および SELECT *.* 権限を持っている必要があります。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '<user_name>' [WITH GRANT OPTION];
    GRANT SELECT ON *.* TO '<user_name>';
    説明
    • 増分同期タスクで、データベースユーザーがソースデータソースのすべてのテーブルに対する読み取り権限を持っていない 場合、タスクは失敗する 可能性があります。

    • WITH GRANT OPTION パラメーターはオプションです。

TiDB データベースがソースデータソースとして機能する場合に必要なユーザー権限

  • データベースユーザーは、データの移行元のデータベースに対する読み取り権限を持っている必要があります。

    GRANT SELECT ON <database_name>.* TO '<user_name>';
  • TiDB データベースからの増分同期中は、データベースユーザーは REPLICATION CLIENTREPLICATION SLAVE、および SELECT *.* 権限を持っている必要があります。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '<user_name>' [WITH GRANT OPTION];
    GRANT SELECT ON *.* TO '<user_name>';

ADB がターゲットデータソースとして機能する場合に必要なユーザー権限

AnalyticDB for MySQL ( ADB ) では、権限制御のために粒度別に異なる権限を付与できます。詳細については、「権限モデル」をご参照ください。

ADB は、次の 4 つのレベルで権限制御をサポートしています。

  • GLOBAL: クラスタレベル

  • DB: データベースレベル

  • TABLE: テーブルレベル

  • COLUMN: カラムレベルまたはフィールドレベル

Kafka インスタンスがターゲットデータソースとして機能する場合に必要なユーザー権限

Kafka インスタンスで認証が必要な 場合は、「Kafka データソースを作成する」をご参照ください。

Kafka ユーザーは、次の操作を実行するための権限を持っている必要があります。

  • トピックを作成および表示する。

  • トピックパーティション情報を表示する。

  • レコードを書き込む。

  • レコードを読み取る。

DataHub インスタンスがターゲットデータソースとして機能する場合に必要なユーザー権限

DataHub データソースのユーザーは、エンドポイント、アクセスキー、またはシークレットキーを使用して認証されます。

DataHub ユーザーは、次の権限を持っている必要があります。GetProjectCreateTopicListTopicGetTopicListShardPutRecordsGetRecords、および GetCursor

RocketMQ インスタンスがターゲットデータソースとして機能する場合に必要なユーザー権限

RocketMQ インスタンスにデータを同期するには、ユーザーは次の操作を実行するための権限を持っている必要があります。

  • トピックを作成および表示する。

  • トピックメッセージキューに関する情報を表示する。

  • レコードを書き込む。

  • レコードを読み取る。