帮你快速理解、总结文档立即下载

账号迁移

最近更新时间:2026-07-27 17:10:00

我的收藏

操作场景

本场景指导用户如何将源库的用户信息迁移到目标库中。

适用场景

当前支持账号迁移的链路为 MySQL/MariaDB/Percona/TDSQL-C MySQL/TDSQL MySQL/TDSQL Boundless 之间的数据迁移。

注意事项

1. DTS 进行账号迁移时,会对源库的账号信息进行检查,对满足要求的账号进行迁移,不满足的不迁移或者降权迁移,账号检查结果分类如下。
完整迁移:账号信息满足检查要求,可以正常迁移。
降权迁移:如果部分权限满足检查要求,则仅对满足的权限进行迁移,不满足的不迁移。
DTS 仅支持对数据库级别和全局级别的权限迁移,不支持其它级别如表级、存储过程级别、列级。例如,源库中一个账号同时具有数据库级别和表级别的权限,则仅迁移此账号中的数据库级别的权限到目标库。
执行迁移任务的账号在目标库中没有对应权限(仅对数据库级别和全局级别),不支持迁移。例如,执行迁移任务的账号在目标库没有删除权限,则源库中账号的删除权限不支持迁移。
不进行迁移:账号信息不满足要求,不支持迁移,详情参见 约束限制
2. 如果源库和目标库存在相同的账号信息(user/host 相同),DTS 支持通过账号冲突策略灵活处理冲突账号,用户可在配置迁移任务时选择不同的账号冲突策略。
账号冲突策略:
跳过该账号(默认):不迁移该冲突账号的任何信息,目标端密码、权限、属性均不变。
仅同步权限:仅迁移在目标端已存在账号的 GRANT 权限信息,保留目标端原密码和账号属性不变。
完全覆盖:以源端信息为准,完全覆盖目标端已存在账号,包括密码、权限和属性。
源库存在的待迁移账号,与执行迁移任务的账号信息一致,则源库账号的以下属性会覆盖到目标库,可能会对迁移任务性能造成影响:MAX_QUERIES_PER_HOUR、MAX_UPDATES_PER_HOUR、MAX_CONNECTIONS_PER_HOUR、MAX_USER_CONNECTIONS、PASSWORD EXPIRE 状态、ACCOUNT LOCK 状态。
账号资源限制属性(MAX_QUERIES_PER_HOUR、MAX_UPDATES_PER_HOUR、MAX_CONNECTIONS_PER_HOUR、MAX_USER_CONNECTIONS)的覆盖规则:仅当源端账号对应属性值非0时才覆盖目标端,源端账号对应属性值为0(表示无限制)时不覆盖目标端原值。
源库存在的待迁移账号,与执行迁移任务账号的 user/host 相同,但密码不相同时,则校验任务会报错,需要将密码修改为一致后再执行迁移任务。
3. 账号迁移不受库表映射的影响。
4. 账号迁移仅在全量阶段进行一次迁移,先迁移账号,再迁移全量的库表结构和数据;后续增量阶段源库新增的账号不会再迁移。
5. AWS 为源的迁移链路中,用户如果选择迁移账号,需要手动在目标端安装 auth_socket 插件

约束限制

1. 阿里云实例的系统账号不支持迁移,包括"replicator"、"aurora"、"aurora_proxy"、"root"、"aliyun_root"。
2. 阿里云实例进行账号迁移时,DTS 先从 mysql.user 表中获取用户数据,如果没有 mysql.user 表则从 mysql.user_view 中获取,如果 mysql.user_view 中没有密码列信息,则无法进行账号迁移。
3. MySQL 8.0 版本特有限制。
源库为 MySQL 8.0 时,不支持动态权限的账号迁移。
目标库为 MySQL 8.0 时,如果目标库存在该账号的存储过程,因为 DTS 当前不支持迁移存储过程,则 CREATE USER 语句会报错。这种情况需要先删除目标端的对应账号,然后重新执行迁移任务。
目标库为 MySQL 8.0 时,待迁移账号在源库有 SYSTEM_USER 权限,但执行迁移任务的账号没有 SYSTEM_USER 权限,则该类账号不支持迁移。
4. 目标库为 MySQL 5.5、5.6 时,如果执行迁移任务的账号无 with grant option 权限,则不支持账号迁移。
5. 源库中创建的角色会按照用户的逻辑被迁移,但如果用户拥有角色的权限时,该用户不进行迁移。
6. 不支持迁移系统账号,如 mysql。
7. 不支持迁移 Proxy User(代理用户)。
8. 如果源库账号中存在特殊字符(如16进制0x00符号),可能会导致账号迁移任务报错。

操作步骤

步骤一:开启账号迁移并配置迁移账号

1. 数据迁移任务设置迁移选项及选择迁移对象页面,勾选是否迁移账号
2. 开启账号迁移后,在待迁移账号详情区域,执行以下操作:
说明:
账号迁移仅在全量阶段进行一次迁移,先迁移账号,再迁移全量的库表结构和数据;后续增量阶段源库新增的账号不会再迁移。建议在迁移配置和正式迁移阶段,不做任何账号变更操作。
选择迁移账号:通过勾选框选择需要迁移的账号,支持全选。未勾选的账号不会被迁移。
修改目标端账号名称:账号名称格式为user@host,其中user@部分为只读,host部分支持编辑修改。
刷新账号列表:单击待迁移账号详情右侧的刷新图标重新加载列表。


步骤二:配置账号冲突策略

账号冲突策略选项中,选择当目标端存在同名账号时的处理策略。支持的策略如下:
跳过该账号(默认):若目标端已存在同名账号,则不迁移源端同名账号的任何信息,目标端密码、权限、属性均不变。
仅同步权限:若目标端已存在同名账号,则仅迁移在目标端已存在账号的 GRANT 权限信息,保留目标端原密码和账号属性不变。实际可迁移的权限范围受本文约束限制中的规则限制。
完全覆盖:若目标端已存在同名账号,则以源端信息为准,完全覆盖目标端已存在账号,包括密码、权限和属性。实际可迁移的权限范围受本文约束限制中的规则限制。
说明:
选择完全覆盖策略时,需在弹出的对话框中,进行二次确认。
选择完全覆盖策略会以源端账号信息完全替换目标端已有同名账号的密码、权限和属性,可能导致目标端现有业务使用该账号时出现认证失败或权限不足的问题。请在确认不会影响目标端现有业务后再选择此策略。

步骤三:校验账号迁移结果

配置完成后进入校验步骤,校验任务会检查源库的账号信息,并展示账号迁移校验结果统计。

单击查看详情,查看详细的账号迁移结果。
完整迁移:账号信息满足检查要求,可以正常迁移。
降权迁移:如果部分权限满足检查要求,则仅对满足的进行迁移,不满足的不迁移。
不进行迁移:账号信息不满足检查要求,不支持迁移,具体原因如下:
阿里云数据库的系统用户,或者无法获取到用户账号密码信息的场景。
MySQL 8.0 的动态权限账号;源库 MySQL 8.0 中待迁移账号有 SYSTEM_USER 权限,但执行迁移任务的账号没有 SYSTEM_USER 权限。
目标库为 MySQL 5.5、5.6 时,执行迁移任务的账号没有 grant 权限。
系统账号,如 mysql、sqlserver 等。
Proxy User(代理用户)。
DTS 无法解析等系统问题。