データ移行機能を使用してデータを移行する前に、すべてのデータソースにデータベースユーザーが作成されており、適切な権限を持っていることを確認してください。
OceanBaseデータベース
ソース側の権限
OceanBaseデータベースのMySQL互換モードをソースとして使用する場合は、OceanBaseデータベースユーザーを作成する必要があります。
OceanBaseデータベースのMySQL互換モード セルフマネージドデータベース タイプをソースとして使用する場合は、OceanBaseデータベースユーザーとsysテナントユーザー(オプション)を作成する必要があります。
OceanBaseデータベースユーザーの作成と権限付与
ここで作成するOceanBaseデータベースユーザーは、インスタンスタイプ が クラスタインスタンス(トランザクション)、クラスタインスタンス(フラッグシップ版)、テナントインスタンス、クラスタインスタンス(分析型)、または セルフマネージドデータベース のOceanBase MySQL互換モードのデータソースを作成する際に、データベースアカウント に入力するアカウントです。
システム管理者としてOceanBaseデータベースにログインし、以下のコマンドを実行します。
-- Create a user in the source business tenant for data migration. CREATE USER '<user_name>' IDENTIFIED BY '<password>'; -- Use the GRANT statement to grant the SELECT privilege on the source database to be migrated to the created database user. GRANT SELECT ON <database_name>.* TO '<user_name>'; -- For OceanBase Database in MySQL-compatible mode V4.0.0 and later, you must also grant the SELECT privilege on the oceanbase database. GRANT SELECT ON oceanbase.* TO '<user_name>';注意
V4.0.0より前のOceanBaseデータベースのMySQL互換モードでは、
oceanbase.*に対する権限を付与していない場合、oceanbase.gv$tableに対するSELECT権限を付与する必要があります。sysテナントユーザーの作成と権限付与
OceanBaseのセルフマネージドデータベースを選択し、増分ログデータとデータベースオブジェクト構造情報を読み取る必要がある場合は、ソース側のsysテナント内にユーザーを作成してください。
ここで作成するsysテナントユーザーは、インスタンスタイプ が セルフマネージドデータベース のOceanBase MySQL互換モードのデータソースを作成する際に、詳細設定 > システムテナントアカウント を有効にした後、システムアカウント に入力するアカウントです。
システム管理者としてOceanBaseデータベースにログインし、以下のコマンドを実行します。
-- Create a user in the sys tenant to read incremental log data and database object structure information from OceanBase Database. CREATE USER <drc_user> IDENTIFIED BY '<drc_password>'; -- Use the GRANT statement to grant the SELECT ON *.* privilege to the created database user. GRANT SELECT ON *.* TO <drc_user>;
ターゲット側の権限
ここで作成するOceanBaseデータベースユーザーは、OceanBase MySQL互換モードのデータソースを作成する際に、データベースアカウント に入力するアカウントです。
システム管理者としてOceanBaseデータベースにログインし、以下のコマンドを実行します。
-- Create a user in OceanBase Database for data migration.
CREATE USER '<username>' IDENTIFIED BY '<password>';
-- You have the CREATE, CREATE VIEW, DROP VIEW, SELECT, INSERT, UPDATE, ALTER, INDEX, and DELETE privileges on the target database.
GRANT CREATE,CREATE VIEW,DROP VIEW,SELECT,INSERT,UPDATE,ALTER,INDEX,DELETE ON <database_name>.* TO '<user_name>';
-- The user has the SELECT privilege on the entire tenant.
GRANT SELECT ON *.* TO '<user_name>';
OceanBaseデータベースのMySQL互換モードのV4.2.4以降V4.3.0未満、またはV4.3.3以降のバージョンをターゲットとして使用する場合:
移行ユーザーにはトリガー権限が必要です。これは、ターゲット側にトリガーが存在するかどうかをチェックするために使用されます。存在する場合、データの不整合が発生する可能性があります。
新規データ移行タスク作成時に構造移行を選択し、かつデータベースのテーブル構造に外部キー制約が含まれる場合、移行ユーザーには外部キーが参照するテーブルが存在するデータベースに対する
REFERENCES権限も必要です。対応するデータベースのトリガーと
REFERENCES権限を付与するか、グローバルなトリガーとREFERENCES権限を付与することもできます。対応するデータベースへの権限付与
GRANT TRIGGER,REFERENCES ON <database_name>.* TO '<user_name>';グローバル権限の付与
GRANT TRIGGER,REFERENCES ON *.* TO '<user_name>';
ソース側の権限
OceanBaseデータベースのOracle互換モードをソースとする場合、OceanBaseデータベースユーザーを作成する必要があります。
OceanBaseデータベースのOracle互換モードである セルフマネージドデータベース タイプをソースとする場合、OceanBaseデータベースユーザーとsysテナントユーザー(オプション)を作成する必要があります。
OceanBaseデータベースユーザーの作成と権限の付与
ここで作成するOceanBaseデータベースユーザーは、インスタンスタイプ が クラスタインスタンス(トランザクション)、クラスタインスタンス(フラッグシップ版)、テナントインスタンス、クラスタインスタンス(分析型)、または セルフマネージドデータベース のOceanBase Oracle互換モードのデータソースを作成する際、データベースアカウント に入力するアカウントです。
システム管理者としてOceanBaseデータベースにログインし、以下のコマンドを実行します。
-- Create a user in the source business tenant for data migration. CREATE USER '<user_name>' IDENTIFIED BY <password>; -- Use the GRANT statement to grant DBA privileges to a created database user. GRANT DBA TO '<user_name>'; -- For OceanBase Database in Oracle-compatible mode V4.0.0 and later, the source-side migration user must also have the DBA_OB_ARCHIVELOG privilege for SELECT operations. GRANT SELECT ON DBA_OB_ARCHIVELOG TO '<user_name>'; -- For OceanBase Database in Oracle-compatible mode V4.2.0 and later, the source-side migration user must also have the SELECT privilege on the DBA_OB_TABLE_LOCATIONS view. GRANT SELECT ON DBA_OB_TABLE_LOCATIONS TO '<user_name>';sysテナントユーザーの作成と権限の付与
OceanBaseのセルフマネージドデータベースを選択し、増分ログデータとデータベースオブジェクト構造情報を読み取る必要がある場合は、ソース側のsysテナント内にユーザーを作成してください。
ここで作成するsysテナントユーザーは、インスタンスタイプ が セルフマネージドデータベース のOceanBase Oracle互換モードのデータソースを作成する際、詳細設定 > sysテナントアカウント を有効にした後、システムアカウント に入力するアカウントです。
システム管理者としてOceanBaseデータベースにログインし、以下のコマンドを実行します。
-- Create a user in the sys tenant to read incremental log data and database object structure information from OceanBase Database. CREATE USER <drc_user> IDENTIFIED BY '<drc_password>'; -- Use the GRANT statement to grant the SELECT ON *.* privilege to the created database user. GRANT SELECT ON *.* TO <drc_user>;
ターゲット側の権限
移行ユーザーに権限を付与するには、以下の2つの方法があります:
方法1
以下のステートメントを実行します。操作は比較的簡単ですが、ユーザーに付与される権限は大きくなります。
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>';
ソース側の権限
OceanBaseデータベースのHBase API互換モードがソース側として使用される場合、移行ユーザーは移行対象のテーブルに対するSELECT権限を持っている必要があります。これはソース側のデータを読み取るために使用されます。
GRANT SELECT ON <database_name>.* TO '<user_name>';
ターゲット側の権限
OceanBase HBase API互換モードをターゲットとして使用する場合、移行ユーザーはターゲット側テーブルに対する書き込み権限を持っている必要があります。タスクに構造移行が含まれる場合は、TableGroupの作成、テーブル作成、およびテーブル構造変更の権限も必要です。
構造移行段階では、CREATE TABLEGROUPおよびCREATE TABLEステートメントが実行されます。OceanBase Cloudの公式ドキュメントによると、TableGroupの作成にはグローバルCREATE(.)権限が必要なため、<database_name>.*レベルのCREATEまたはALL PRIVILEGESのみを付与するだけでは構造移行を完了できません。
以下の方法で権限を付与することを推奨します:
GRANT CREATE ON *.* TO '<user_name>';
GRANT ALTER,SELECT,INSERT,UPDATE,DELETE ON <database_name>.* TO '<user_name>';
パラメータ説明:
CREATE ON *.*:構造移行段階でTableGroupを作成し、テーブル作成に必要なCREATE権限も付与するために使用されます。ALTER:構造移行段階でテーブル構造を変更するために使用されます。SELECT, INSERT, UPDATE, DELETE:全量移行、増分同期、データ検証などのデータ読み書きシナリオに使用されます。
構造移行を有効化せず、かつターゲット側のTableGroupとテーブル構造が事前に作成済みの場合は、グローバルCREATEを付与せず、実際の移行段階に応じてターゲットデータベースレベルのデータ読み書きおよびテーブル構造変更権限のみを付与することができます。
権限付与を簡略化したい場合は、より広範囲のALL PRIVILEGESを付与することもできますが、その場合はグローバルな*.*に対する権限を含める必要があります。単独のGRANT ALL PRIVILEGES ON <database_name>.*には、依然としてTableGroup作成に必要なグローバル権限は含まれていません。
MySQL
ソース側の権限
-- The database user must have read permission on the database to be migrated. For MySQL database V8.0, additionally grant the SHOW VIEW privilege.
GRANT SELECT ON <database_name>.* TO '<user_name>';
-- During incremental synchronization from a MySQL database, the database user must have the REPLICATION CLIENT, REPLICATION SLAVE, and SELECT *.* privileges.
-- During incremental synchronization, lacking read permissions on all tables at the source may cause the task to be interrupted abnormally. The [WITH GRANT OPTION] clause in the following command is optional.
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '<user_name>' [WITH GRANT OPTION];
GRANT SELECT ON *.* TO '<user_name>';
ターゲット側の権限
MySQLデータベースがターゲット側となる場合、移行ユーザーはターゲット側データベースに対する CREATE、CREATE VIEW、INSERT、UPDATE および DELETE 権限を持っている必要があります。
GRANT <privilege_type> ON <database_name>.<table_name> TO '<user_name>'@'<host_name>' [WITH GRANT OPTION];
パラメータ |
説明 |
|---|---|
| privilege_type | このアカウントに CREATE、INSERT および UPDATE などの操作権限を付与します。このアカウントにすべての権限を付与する必要がある場合は、ALL を使用してください。 |
| database_name | データベースの名前です。このアカウントにすべてのデータベースに対する操作権限を付与する場合は、アスタリスク(*)を使用してください。 |
| table_name | テーブルの名前です。このアカウントにすべてのテーブルに対する操作権限を付与する場合は、アスタリスク(*)を使用してください。 |
| user_name | 権限を付与されるアカウントです。 |
| host_name | このアカウントがログインできるホストです。このアカウントを任意のホストからログインさせる場合は、パーセント記号(%)を使用してください。 |
| WITH GRANT OPTION | このアカウントが持つ権限を、GRANTステートメントで他のアカウントに付与できるようにします。この句は省略可能です。 |
構造移行時には、移行するビューとインデックスにそれぞれ以下の権限が必要です。
ビューを構造移行するには、データベースの
SELECT権限が必要です。GRANT SELECT ON <database_name>.* TO '<user_name>';インデックスを構造移行するには、データベースの
INDEX権限が必要です。GRANT INDEX ON <database_name>.* TO '<user_name>';
データベースユーザーにはトリガー権限が必要です。
この権限は、ターゲット側にトリガーが存在するかどうかをチェックするために使用されます。存在する場合、データの不整合を引き起こす可能性があります。
GRANT TRIGGER ON *.* TO '<user_name>';または、以下のステートメントを実行します。
GRANT TRIGGER ON <database_name>.* TO '<user_name>';OceanBaseデータベースのMySQL互換モードからMySQLデータベースへの双方向同期タスクでは、ターゲット側に
omsデータベースのSELECT、CREATE、INSERTおよびUPDATE権限が必要です。GRANT SELECT, CREATE, INSERT, UPDATE ON oms.* TO '<user_name>';
Oracle
Oracleデータベースをソースとする順方向移行およびターゲットとする逆方向移行に必要な権限は同じです。
説明
ADGスタンバイデータベースでは、権限付与後にも権限が反映されない場合があります。その場合、スタンバイデータベースでコマンド
ALTER SYSTEM FLUSH SHARED_POOL;を実行してShared Poolをリフレッシュする必要があります。本記事で説明するのは最小権限ではありません。移行ユーザーには
SELECT ANY TRANSACTION、SELECT ANY TABLE、およびSELECT ANY DICTIONARY権限を付与する必要があります。
Oracle Database 12cより前のバージョンでのDBAユーザーへの権限付与
利用環境のポリシーで移行ユーザーへのDBAロールの付与が許可されており、Oracleデータベースのバージョンが12cより前の場合は、以下のステートメントでDBA権限を付与できます。
GRANT DBA TO <user_name>;
Oracle Database 12cより前のバージョンでの非DBAユーザーへの権限付与
移行ユーザーへの権限付与をより厳密に管理する必要があり、Oracleデータベースのバージョンが12cより前の場合は、以下の手順で権限を付与します。
CONNECT権限を付与します。
GRANT CONNECT TO <user_name>;移行ユーザーに
CREATE SESSION、ALTER SESSION、SELECT ANY TRANSACTION、SELECT ANY TABLE、およびSELECT ANY DICTIONARY権限を付与します。GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <user_name>;移行ユーザーに
LOGMINER関連権限を付与します。GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <user_name>;移行ユーザーに
CREATE TABLEおよびUNLIMITED TABLESPACE権限を付与します。GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <user_name>;移行するスキーマ名が
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 privileges on the specific table to be migrated. GRANT DELETE, INSERT, UPDATE ON <database_name>.<table_name> TO <user_name>;
Oracle Database 12c以降のDBAユーザーへの権限付与
ユーザーの環境で移行ユーザーにデータベース管理者(DBA)ロールを付与でき、Oracleデータベースのバージョンが12c以降の場合は、12c/18c/19cのプラガブル・データベース(Pluggable Database、PDB)を使用しているかどうかを確認する必要があります。
非PDB
以下の権限付与ステートメントを実行し、移行ユーザーにDBA権限を付与します。
GRANT DBA TO <user_name>;以下のステートメントを実行し、移行ユーザーに
SYS.USER$テーブルの読み取り権限を付与します。GRANT SELECT ON SYS.USER$ TO <user_name>;
PDB
OracleデータベースからOceanBaseデータベースのOracle互換モードへ移行する際、移行元が12c/18c/19cのプラガブル・データベース(Pluggable Database、PDB)の場合、PDBにアクセスするアカウントは共通ユーザーである必要があります。
以下のステートメントを実行し、CDB$ROOTに切り替えます。
ALTER SESSION SET CONTAINER=CDB$ROOT;各共通ユーザーは、ルート・コンテナ(
CDB$ROOT)および接続権限を持つ任意のPDBに接続し、関連する操作を実行できます。以下のステートメントを実行し、移行ユーザーにDBA権限を付与します。
GRANT DBA TO C##XXX CONTAINER=ALL;以下のステートメントを実行し、移行ユーザーに
SYS.USER$テーブルの読み取り権限を付与します。GRANT SELECT ON SYS.USER$ TO C##XXX CONTAINER=ALL;
Oracle Database 12c以降の非DBAユーザーへの権限付与
移行ユーザーへの権限付与をより厳密に管理する必要があり、Oracleデータベースのバージョンが12c以降の場合は、以下の手順で権限を付与します。
非PDB
CONNECT権限を付与します。
GRANT CONNECT TO <user_name>;以下のステートメントを実行し、移行ユーザーに
SYS.USER$テーブルの読み取り権限を付与します。GRANT SELECT ON SYS.USER$ TO <user_name>;移行ユーザーに
CREATE SESSION、ALTER SESSION、SELECT ANY TRANSACTION、SELECT ANY TABLEおよびSELECT ANY DICTIONARY権限を付与します。GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <user_name>;移行ユーザーに
LOGMINER関連権限を付与します。GRANT LOGMINING TO <user_name>; GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <user_name>;移行ユーザーに
CREATE TABLEおよびUNLIMITED TABLESPACE権限を付与します。GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <user_name>;移行するスキーマ名が
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データベースからOceanBaseデータベースのOracle互換モードへ移行する際、移行元が12c/18c/19cのプラガブル・データベース(Pluggable Database、PDB)の場合、PDBにアクセスするアカウントは共通ユーザーである必要があります。
CONNECT権限を付与します。
GRANT CONNECT TO <C##XXX> CONTAINER=ALL;以下のステートメントを実行し、移行ユーザーに
SYS.USER$テーブルの読み取り権限を付与します。GRANT SELECT ON SYS.USER$ TO <C##XXX> CONTAINER=ALL;移行ユーザーに
CREATE SESSION、ALTER SESSION、SELECT ANY TRANSACTION、SELECT ANY TABLEおよびSELECT ANY DICTIONARY権限を付与します。GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <C##XXX> CONTAINER=ALL;移行ユーザーに
LOGMINER関連権限を付与します。GRANT LOGMINING TO <C##XXX> CONTAINER=ALL; GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <C##XXX> CONTAINER=ALL;移行ユーザーに
CREATE TABLEおよびUNLIMITED TABLESPACE権限を付与します。GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <C##XXX> CONTAINER=ALL;移行するスキーマ名が
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;
PostgreSQL
ソース側の権限
PostgreSQLデータベースをソースとしてデータ移行を行う場合、増分同期が必要かどうかに応じて、データベースユーザーが持つ必要がある権限も異なります。
構造移行または全量移行のみ
データ移行タスクに増分同期のステップが含まれない場合、移行ユーザーは移行対象のデータベースに対する読み取り権限を持っている必要があります。権限付与ステートメントは以下のとおりです。
GRANT CONNECT ON DATABASE <database_name> TO <user_name>; GRANT USAGE ON SCHEMA <schema_name> TO <user_name>; GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <user_name>;増分同期を含む場合
データ移行タスクに増分同期のステップが含まれる場合、移行ユーザーは以下のいずれかの条件を満たす必要があります。
方法1:スーパーユーザー(セルフマネージド PostgreSQLでの使用を推奨します)。
-- Create User CREATE USER <user_name> WITH PASSWORD '<password>'; -- Grant superuser privileges ALTER USER <user_name> WITH SUPERUSER;方法2:クラウドベンダーの高権限アカウント(RDS PostgreSQLで使用)。
異なるクラウドベンダーのRDS PostgreSQLインスタンスでは、スーパーユーザーを作成することはできませんが、それに近い権限を持つ高権限アカウントが提供されます。
Alibaba Cloud RDS PostgreSQL:データベースユーザーは
pg_rds_superuserロールを持っている必要があります。以下のステートメントで確認できます。SELECT pg_has_role('<user_name>', 'pg_rds_superuser', 'member');AWS RDS PostgreSQL:データベースユーザーは
rds_superuserロールを持っている必要があります。Huawei Cloud RDS PostgreSQL:データベースユーザーはデフォルトで提供される高権限アカウント
rootです。
説明
- 増分同期にはPostgreSQLインスタンスの論理レプリケーション機能へのアクセスが必要なため、ユーザーはスーパーユーザー権限、またはクラウドベンダーが提供する同等の高権限を持っている必要があります。
- クラウドベンダーのRDS PostgreSQLインスタンスの場合、一部の設定は該当するクラウドコンソールで変更する必要があります。
ターゲット側の権限
PostgreSQLデータベースをターゲットとする場合、移行ユーザーは以下の権限を持っている必要があります。
データベース接続権限
GRANT CONNECT ON DATABASE <database_name> TO <user_name>;ターゲットスキーマの使用権限
GRANT USAGE ON SCHEMA <schema_name> TO <user_name>;ターゲットテーブルへの書き込み権限
-- Authorize an Existing Table GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA <schema_name> TO <user_name>; -- Automatically grant privileges on tables created in the future ALTER DEFAULT PRIVILEGES IN SCHEMA <schema_name> GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO <user_name>;
TiDB
TiDBデータベースユーザーの作成
TiDBデータベースにログインします。
CREATE USERステートメントを使用して新しいユーザーを作成します。CREATE USER '<user_name>'@'<host_name>' IDENTIFIED BY '<user_password>';パラメータ説明user_name 作成するユーザー名。 host_name このユーザーがログインできるホスト。任意のホストからデータベースにログインを許可する場合は、パーセント記号(%)を使用します。 user_password 作成するユーザーのパスワード。 例えば、
testという名前のユーザーを作成し、このユーザーが任意のホストからTiDBデータベースにログインできるようにし、ログインパスワードをpasswordに設定します。CREATE USER 'test'@'%' IDENTIFIED BY 'password';GRANTステートメントを使用して、作成したデータベースユーザーに権限を付与します。
ソース側の権限
-- The database user must have read permission on the database to be migrated.
GRANT SELECT ON <database_name>.* TO '<user_name>';
-- During incremental synchronization from a TiDB database, the database user must have the REPLICATION CLIENT, REPLICATION SLAVE, and SELECT *.* privileges.
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '<user_name>' [WITH GRANT OPTION];
GRANT SELECT ON *.* TO '<user_name>';
ターゲット側の権限
TiDBデータベースがターゲット側となる場合、移行ユーザーは CREATE、CREATE VIEW、INSERT、UPDATE、および DELETE 権限を持っている必要があります。
GRANT <privilege_type> ON <database_name>.<table_name> TO '<user_name>'@'<host_name>' [WITH GRANT OPTION];
パラメータ |
説明 |
|---|---|
| privilege_type | このアカウントにCREATE、INSERT、UPDATEなどの操作権限を付与します。このアカウントにすべての権限を付与する場合は、ALLを使用します。 |
| database_name | データベースの名前。このアカウントにすべてのデータベースの操作権限を付与する場合は、アスタリスク(*)を使用します。 |
| table_name | テーブルの名前。このアカウントにすべてのテーブルの操作権限を付与する場合は、アスタリスク(*)を使用します。 |
| user_name | 権限を付与するアカウント。 |
| host_name | このアカウントがログインできるホスト。任意のホストからログインを許可する場合は、パーセント記号(%)を使用します。 |
| WITH GRANT OPTION | このアカウントが持つ権限を、GRANTステートメントで他のアカウントに付与できるようにします。この句は省略可能です。 |
Kafka
Kafkaで認証が有効な場合は、Kafkaデータソースの新規作成を参照してください。
Kafkaをターゲットとして使用する場合、移行ユーザーは以下の操作を実行する権限が必要です:
トピックの作成と表示
トピックのパーティション情報の表示
レコードの書き込み
レコードの読み取り
Lindorm
Lindormインスタンスにはデフォルトでrootとcolumnar_internal_userの2つのユーザーが存在し、両方とも全権限を持っています。実際のニーズに応じて、専用の移行ユーザーを作成して権限を付与することもできます。権限の付与レベルは、グローバル、Namespace、またはTableを選択できます。
Lindormインスタンスユーザーの作成
Lindorm管理コンソールにログインします。
インスタンス一覧ページで、対象インスタンスのIDをクリックします。
インスタンス詳細ページで、左側のナビゲーションバーのアクセス制御をクリックし、クライアントIPを許可リストに追加します。
ifconfigコマンドでクライアントIPを取得します。アクセス制御 > 許可リストタブで、対象グループの後ろのグループの変更をクリックします。
新しいグループを追加する必要がある場合は、グループ許可リストの作成をクリックして関連設定を行うこともできます。詳細については、許可リストの設定を参照してください。
**OK**をクリックします。
Lindorm Insightページにアクセスします。
アクセス制御ページで、左側のナビゲーションバーのワイドテーブルエンジンをクリックします。
ワイドテーブルエンジンページの右側にあるクラスタ管理エリアで、ClusterManagerパブリックをクリックします。
説明
Lindorm Insightページに初めてログインする場合は、ワイドテーブルエンジンページの右側にあるクラスタ管理エリアで、UIアクセスパスワードのリセットをクリックし、Lindorm Insightページのログインパスワードを設定してから、ClusterManagerパブリックをクリックしてください。
ポップアップウィンドウで、クライアントIPが許可リストに追加されており、初回ログイン時にパスワードがリセットされたことを確認したら、**確認**をクリックします。
ログインダイアログボックスに、**ユーザー名とパスワード**を入力します。
**ログイン**をクリックします。
新規ユーザーの作成
Lindorm Insightページで、左側のナビゲーションバーのデータ管理 > ユーザー管理をクリックします。
ユーザー管理ページで、新規ユーザーをクリックします。
新規ユーザー作成ダイアログボックスで、**ユーザー名とパスワードを入力し、OK**をクリックします。
作成が成功すると、ユーザー管理ページで新規作成されたユーザーを確認できます。
ソース側の権限
Lindormインスタンスをソース側として使用する場合、Lindormデータソース作成時にユーザー名を入力するためのLindormインスタンスユーザーを作成する必要があります。ソース側のユーザーにはREAD権限が必要であり、READ権限はGET、SCAN、テーブル記述クエリなどの読み取り操作に使用されます。
構造移行、全量移行、および全量検証の各段階では、READ権限が必要です。
増分同期の段階では、特別な設定は不要で、デフォルトの権限で利用できます。
権限付与の操作手順は以下のとおりです(グローバル権限を例にします):
ユーザー管理ページで、対象ユーザーの後ろにある その他 > グローバル権限の付与 をクリックします。
namespaceやtableに対する権限付与も可能です。詳細については、権限管理を参照してください。
グローバル権限の付与ダイアログで、READ を選択します。
OK をクリックすると、ユーザー権限の設定は完了です。
ターゲット側の権限
Lindormインスタンスがターゲット側として使用される場合、Lindormデータソースの作成時にユーザー名を入力するためのLindormインスタンスユーザーを作成する必要があります。ターゲット側のユーザーにはREAD権限とWRITE権限が必要です。READ権限はGET、SCAN、テーブル記述クエリなどの読み取り操作に使用されます。WRITE権限はPUT、BATCH、DELETE、INCREMENT、APPENDなどの書き込み操作に使用されます。
- 現在、増分同期がサポートされており、READ権限とWRITE権限が必要です。
権限付与の操作手順は以下のとおりです(グローバル権限を例にします):
ユーザー管理ページで、対象ユーザーの後ろにある その他 > グローバル権限の付与 をクリックします。
namespaceやtableに対する権限付与も可能です。詳細については、権限管理を参照してください。
グローバル権限の付与ダイアログで、READ と WRITE を選択します。
HBase
HBase Enhanced Editionインスタンスを作成すると、デフォルトでrootユーザーが存在し、すべての権限(read、write、admin、trash、systemを含む)を持ちます。HBase Enhanced EditionインスタンスのデータをOceanBaseデータベースのHBase API互換モードにデータ転送・移行する際には、実際のニーズに応じてユーザーを作成し権限を付与できます。
HBase Enhanced Editionインスタンスユーザーの作成
HBaseコンソールにログインします。
クラスターリストページで、HBase Enhanced Edition (Lindorm)/2.0の対象クラスターIDをクリックします。
基本情報ページで、左側のナビゲーションバーのアクセス制御をクリックし、クライアントIPを許可リストに追加します。
ifconfigコマンドでクライアントIPを取得します。
アクセス制御 > 許可リスト設定タブで、対象グループの下のグループ許可リストの変更をクリックします。
新しいグループを追加する必要がある場合は、グループ許可リストの追加をクリックして関連設定を行うこともできます。詳細については、許可リストの設定を参照してください。
グループ許可リストの変更ダイアログボックスに、クライアントIPを入力します。
**OK**をクリックします。
Lindorm Insightページにアクセスします。
アクセス制御ページで、左側のナビゲーションバーのクラスタ管理をクリックします。
クラスタ管理ページで、ClusterManagerパブリックをクリックします。
説明
Lindorm Insightページに初めてログインする場合は、ワイドテーブルエンジンページの右側にあるクラスタ管理エリアで、UIアクセスパスワードのリセットをクリックし、Lindorm Insightページのログインパスワードを設定してから、ClusterManagerパブリックをクリックしてください。
ログインダイアログボックスに、**ユーザー名とパスワード**を入力します。
**ログイン**をクリックします。
新規ユーザーを追加します。
Lindorm Insightページで、左側のナビゲーションバーのデータ管理 > ユーザー管理をクリックします。
ユーザー管理ページで、右上の新規ユーザーをクリックします。
新規ユーザー作成ダイアログボックスで、**ユーザー名とパスワード**を入力します。
**確定**をクリックします。
作成が成功すると、ユーザー管理ページで新規ユーザーを確認できます。
ソース側の権限
HBaseインスタンスをソース側とする場合、HBaseデータソース作成時にユーザー名として入力するためのHBaseインスタンスユーザーを作成する必要があります。ソース側のユーザーにはREAD権限が付与されていなければなりません。READ権限はGET、SCAN、テーブル説明クエリなどの読み取り操作に使用されます。
構造移行、全量移行、および全量検証の各段階では、READ権限が必要です。
増分同期の段階では、特別な設定は不要で、デフォルトの権限で十分です。
権限付与の手順は以下のとおりです(グローバル権限を例とします):
ユーザー管理ページで、対象ユーザーの後ろにある その他 > グローバル権限の付与 をクリックします。
namespaceまたはtableに対しても権限を付与できます。詳細については、権限管理を参照してください。
グローバル権限付与ダイアログで、READ を選択します。
OK をクリックすると、ユーザー権限の設定が完了します。
ターゲット側の権限要件
HBaseインスタンスをターゲット側とする場合、HBaseデータソース作成時にユーザー名として入力するためのHBaseインスタンスユーザーを作成する必要があります。ターゲット側のユーザーにはREADおよびWRITE権限が付与されていなければなりません。READ権限はGET、SCAN、テーブル説明クエリなどの読み取り操作に使用されます。WRITE権限はPUT、BATCH、DELETE、INCREMENT、APPENDなどの書き込み操作に使用されます。
- 現在、増分同期がサポートされており、READおよびWRITE権限が必要です。
権限付与の手順は以下のとおりです(グローバル権限を例とします):
ユーザー管理ページで、対象ユーザーの後ろにある その他 > グローバル権限の付与 をクリックします。
namespaceまたはtableに対しても権限を付与できます。詳細については、権限管理を参照してください。
グローバル権限付与ダイアログで、READ と WRITE を選択します。
DataHub
DataHubはAlibaba Cloud RAMを用いてアクセス制御を行います。ユーザーによるDataHubリソースへのアクセスは、RAMによって認証されます。Alibaba Cloudのメインアカウントは所属リソースのすべての権限を有しており、サブユーザーは作成時には一切の権限を持たず、どのリソースにもアクセスできません。ユーザーはRAM内でそのサブユーザーに対する権限付与操作を行う必要があります。詳細については、DataHub権限制御を参照してください。
ターゲット側の権限
DataHubがターゲット側となる場合、移行ユーザーは以下のカスタム権限ポリシーを付与されている必要があります。
RAMアクセス制御コンソールにログインします。
カスタム権限ポリシーにIP許可リストを追加します。
RAMアクセス制御コンソールに戻ります。
左側のナビゲーションバーで、権限管理 > 権限ポリシー を選択します。
権限ポリシーの作成 をクリックします。
設定画面で、スクリプト編集 タブをクリックします。
入力ボックス内の既存コードを削除し、以下のJSONコードをコピーして貼り付け、必要なIPアドレスを設定します。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "datahub:*", "Resource": "*", "Condition": { "IpAddress": { "acs:SourceIp": [ "xx.xx.xx.xx", "xx.xx.xx.xx/24" ] } } } ] }"Action": "datahub:*":DataHubのすべての操作権限(読み書き、管理)を付与することを示します。"Resource": "*":このアカウント配下のすべてのDataHub ProjectとTopicへのアクセスを許可することを示します。"acs:SourceIp": [...]":アクセスのIP許可リストを追加します。IP許可リスト制限が不要な場合は、Conditionフィールド全体を削除する必要があります。
RAMユーザーにDataHub権限を付与します。
左側のナビゲーションバーで、アイデンティティ管理 > ユーザー をクリックします。
権限を付与するRAMユーザーを見つけ、ユーザー名をクリックします。
ユーザー詳細ページで、権限管理 タブをクリックし、権限の追加 ボタンをクリックします。
ポップアップパネルで、カスタムポリシー を選択します。
検索ボックスにDataHubと入力し、前の手順で新規作成したIP権限ポリシーを選択して、OK をクリックします。
RAMユーザーのAccessKeyを取得または作成します。現在のユーザーにAccessKeyが既に存在する場合は、そのまま使用できます。
ユーザー詳細ページに戻り、認証管理 タブをクリックします。
AccessKey 領域でAccessKey IDとAccessKey Secretを取得します。
AccessKeyが既にある場合は、そのまま使用できます。
AccessKeyがない場合は、AccessKeyを作成 をクリックし、セキュリティ検証を完了するとAccessKey IDとAccessKey Secretが表示されます。
注意
AccessKey Secretは、必ずすぐに保存してください。AccessKey Secretは作成時に一度だけ表示され、画面を閉じた後は取得できません。