全部產品
Search
文件中心

Data Transmission Service:遷移資料庫帳號

更新時間:Dec 07, 2024

Data Transmission Service支援遷移源庫帳號的功能。針對需要遷移資料庫帳號的情境,您可以在配置同步或遷移任務過程中啟用帳號遷移功能,協助您方便快捷地將源庫的帳號(包含密碼和許可權)遷移至目標庫。

背景資訊

在您將源庫的資料同步或遷移到目標庫後,源庫中的帳號往往需要手動在目標庫中建立和授權。手動在目標庫建立帳號需要有相關資料庫的專業知識、耗費時間較多、容易遺漏等缺點,可能會導致業務受阻。

前提條件

  • 配置任務使用的源和目標庫帳號滿足要求,具體要求請參見資料庫帳號要求的權限

  • 使用DTS同步或遷移資料的庫表結構。即在配置任務對象及高級配置階段中,同步類型勾選了庫表結構同步或者遷移類型勾選了庫表結構遷移

注意事項

  • 當前僅MySQL執行個體間的同步或遷移、MySQL執行個體同步或遷移到PolarDB MySQL版叢集、PolarDB MySQL版叢集間的同步或遷移執行個體,支援將源庫的帳號遷移至目標庫。

    重要
    • MySQL執行個體含RDS MySQL和自建MySQL。

    • 目標RDS MySQL執行個體為5.6版本時,不支援遷移帳號。

    • 暫不支援MySQL 8.0的動態許可權遷移。

    • 若目標庫為RDS MySQL執行個體,由於RDS MySQL產品的限制,不支援遷移包含RELOAD、CREATE TABLESPACE、FILE或ALL PRIVILEGES許可權的帳號。

  • 系統帳號(如root、mysql.infoschema、mysql.session、mysql.sys等)和內建帳號不支援遷移至目標庫。若您勾選了系統帳號或內建帳號,則會導致DTS執行個體報錯Access denied for user 'XXXX'

  • 目標庫中已存在的帳號不支援遷移。如果重啟任務或者存在多個任務導致目標庫已存在待遷移的帳號,在執行個體結構遷移模組的User_Privilege頁簽會顯示帳號已遷移成功,且在相應的建立文法中會有注釋user already exists

  • 未經授權的帳號不支援遷移。

  • 遷移帳號時不支援重設帳號密碼。

  • 若遷移的帳號為高許可權帳號,遷移至目標庫後將會變為無授權資料庫的普通帳號。

資料庫帳號要求的權限

若您需要遷移來源資料庫中的帳號,則配置任務過程中使用的資料庫帳號有如下要求(高許可權帳號滿足要求):

帳號

許可權

授權方式

來源資料庫帳號

中繼資料表mysql.user、mysql.db、mysql.columns_priv、mysql.tables_priv的SELECT許可權。

使用高許可權帳號,分別在源庫和目標庫中執行如下命令進行授權:

源庫

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@'%';

目標庫

grant SELECT on mysql.user to user@'%';
grant CREATE USER on *.* to user@'%';
grant GRANT OPTION on *.* to user@'%';
說明

命令中的user需要替換為任務中使用的帳號。

目標資料庫帳號

CREATE USER許可權、GRANT OPTION許可權和中繼資料表mysql.user的SELECT許可權

操作步驟

  1. 高級配置階段將是否遷移帳號選擇為

  2. 根據需求選擇需要遷移的帳號。

    說明

    待遷移帳號的格式為<username>@<host>,您可以根據實際情況修改<host>以指定該帳號允許登入的主機。

  3. 根據提示完成後續操作。更多資訊,請參見同步方案概覽遷移方案概覽中的相關配置文檔。

常見問題

  • 為什麼無法選中帳號?

    可能是該帳號為系統帳號,或者目標庫中已存在同名的帳號。

  • 為什麼帳號名稱列表中沒有帳號?

    可能是由於任務中配置的帳號許可權不足,您需要確保源庫和目標庫的帳號均滿足要求。