数据传输服务DTS(Data Transmission Service)支持迁移源库账号的功能。针对需要迁移数据库账号的场景,您可以在配置同步或迁移任务过程中启用账号迁移功能,帮助您方便快捷地将源库的账号(包含密码和权限)迁移至目标库。
背景信息
在您将源库的数据同步或迁移到目标库后,源库中的账号往往需要手动在目标库中创建和授权。手动在目标库创建账号需要有相关数据库的专业知识、耗费时间较多、容易遗漏等缺点,可能会导致业务受阻。
前提条件
配置任务使用的源和目标库账号满足要求,具体要求请参见数据库账号所需权限。
使用DTS同步或迁移数据的库表结构。即在配置任务对象及高级配置阶段中,同步类型勾选了库表结构同步或者迁移类型勾选了库表结构迁移。
注意事项
当前仅MySQL实例间的同步或迁移、MySQL实例同步或迁移到PolarDB MySQL版集群、PolarDB MySQL版集群间的同步或迁移实例,支持将源库的账号迁移至目标库。
说明MySQL实例含RDS MySQL和自建MySQL。
目标RDS MySQL实例为5.6版本时,不支持迁移账号。
暂不支持MySQL 8.0的动态权限迁移。
不支持迁移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权限 |
操作步骤
常见问题
为什么无法选中账号?
可能是该账号为系统账号,或者目标库中已存在同名的账号。
为什么账号名称列表中没有账号?
可能是由于任务中配置的账号权限不足,您需要确保源库和目标库的账号均满足要求。