データをターゲットデータベースに移行または同期する際、通常はソースデータベースのすべてのアカウントを手動で再作成する必要があります。このプロセスは時間と専門知識(データベースに関する深い知識)を要し、見落としのリスクも高くなります。Data Transmission Service (DTS) では、移行または同期タスクの一環として、ソースデータベースのアカウント(パスワードおよび権限を含む)を自動的にターゲットデータベースへ移行します。
前提条件
開始する前に、以下の点をご確認ください。
DTS タスクで使用するソースおよびターゲットデータベースのアカウントに、必要な権限が付与されていること。正確な GRANT コマンドについては、「必要な権限」をご参照ください。
スキーマ移行 または スキーマ同期 を移行/同期タイプとして選択していること。つまり、[タスクの作成] ウィザードの オブジェクトと詳細設定の構成 ステップにおいて、同期タイプ パラメーターに スキーマ同期 を選択するか、移行タイプ パラメーターに スキーマ移行 を選択してください。
対応するデータベース
MySQL データベースには、ApsaraDB RDS for MySQL インスタンスまたは自己管理 MySQL データベースを使用できます。
| ソースデータベース | ターゲットデータベース |
|---|---|
| MySQL | MySQL、PolarDB for MySQL |
| PolarDB for MySQL | MySQL、PolarDB for MySQL |
必要な権限
アカウント移行を実行する前に、ソースおよびターゲットデータベースの DTS タスク用アカウントに、以下の権限を付与してください。
ソースデータベース
特権アカウントを使用して、以下のコマンドを実行します。DTS タスクの設定に使用するアカウントで、user を置き換えます。
grant SELECT on mysql.user to user@'%';
grant SELECT on mysql.db to user@'%';
grant SELECT on mysql.columns_priv to user@'%';
grant SELECT on mysql.tables_priv to user@'%';ターゲットデータベース
次のコマンドを特権アカウントを使用して実行します。user を、DTS タスクの設定に使用するアカウントに置き換えます。
grant SELECT on mysql.user to user@'%';
grant CREATE USER on *.* to user@'%';
grant GRANT OPTION on *.* to user@'%';アカウント移行の有効化
[タスクの作成] ウィザードの 詳細設定 ステップで、アカウントを移行するかどうか を はい に設定します。
移行するアカウントを選択します。
アカウント名のフォーマットは
<username>@<host>です。<host>は、そのアカウントが接続可能なホストを示します。残りのタスク構成を完了します。詳細については、「データ同期シナリオの概要」または「データ移行シナリオの概要」をご参照ください。
移行結果
タスク実行後、各アカウントは以下のいずれかの状態になります。
移行済み:アカウントおよびすべての権限が、ターゲットデータベースに完全に移行されました。
未移行:アカウントはスキップされました。詳細を表示するには、DTS タスクの スキーマ移行 モジュールにある User_Privilege タブに移動してください。ターゲットデータベースに既に存在するアカウントは、「
user already exists」というアノテーション付きで「移行済み」として一覧表示されます。移行を妨げるすべての条件については、「制限事項」をご参照ください。
制限事項
以下の条件により、アカウント移行が実行できない場合や、移行動作に影響が出る場合があります。タスクを実行する前に、ご使用のデータベースバージョンおよびアカウントタイプに該当する条件を確認してください。
ターゲットデータベースのバージョン
ターゲットデータベースが MySQL 5.6 インスタンスまたは PolarDB for MySQL クラスターの場合、アカウント移行はサポートされていません。
MySQL 8.0 ソースの制限事項
ソースデータベースが MySQL 8.0 の場合、動的権限を持つアカウントは移行できません。
権限に関する制限事項
RELOAD、CREATE TABLESPACE、FILE、または ALL PRIVILEGES 権限を持つアカウントは、MySQL または PolarDB for MySQL のターゲットデータベースへ移行できません。
アカウントタイプに関する制限事項
システムアカウント(root、mysql.infoschema、mysql.session、mysql.sys)および組み込みアカウントは移行できません。これらのアカウントを選択すると、DTS タスクで
Access denied for user 'XXXX'エラーが返されます。ターゲットデータベースに既に存在するアカウントは移行できません。DTS タスクの再開や複数の DTS タスクの並列実行時など、移行対象のアカウントがターゲットデータベースにすでに存在する可能性があります。
権限のないアカウントは移行できません。
移行後の動作
移行中にアカウントのパスワードをリセットすることはできません。
特権アカウントはターゲットデータベース上で標準アカウントとなり、データベース管理権限を失います。
localhostまたは127.0.0.1のみでアクセスされるターゲット Alibaba Cloud データベースインスタンスのアカウントは、データ移行に対応していないため、移行しないことを推奨します。
よくある質問
アカウントを選択できないのはなぜですか?
該当のアカウントは、システムアカウントであるか、またはターゲットデータベースに同名のアカウントが既に存在しています。
アカウント一覧が空欄になっているのはなぜですか?
DTS タスク用アカウントが、ソースまたはターゲットデータベースに対して必要な権限を付与されていません。「必要な権限」に記載された GRANT コマンドを使用して、権限を確認してください。