數據傳輸服務DTS(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權限。 | 使用高權限賬號,分別在源庫和目標庫中執行如下命令進行授權: 源庫
目標庫
說明 命令中的 |
目標數據庫賬號 | CREATE USER權限、GRANT OPTION權限和元數據表mysql.user的SELECT權限 |
操作步驟
常見問題
為什么無法選中賬號?
可能是該賬號為系統賬號,或者目標庫中已存在同名的賬號。
為什么賬號名稱列表中沒有賬號?
可能是由于任務中配置的賬號權限不足,您需要確保源庫和目標庫的賬號均滿足要求。