迁移数据库账号
更新时间:2024-05-28
针对需要迁移数据库账号的场景,您可以在配置传输任务过程中启用迁移账号功能,帮助您方便快捷地将源端数据库实例的账号(包含密码和权限)迁移至目标端数据库。
前提条件
- 使用 DTS 迁移数据的库表结构。即在 对象映射 步骤中,勾选结构迁移。
- 配置任务使用的源和目标库账号满足要求,详情参见 数据库账号所需权限。
注意事项
-
目前仅 MySQL、GaiaDB、MongoDB 支持迁移账号。
- GaiaDB 做源端时,只支持迁移主库账号,不支持迁移代理账号
- Gaiadb 做目标端时,迁移的账号仅允许访问主库,不支持访问代理
- 目标库已经存在的账号不支持迁移。
- 账号需满足下游数据库服务要求,如 RDS MySQL 限制账号创建不超过 20 个。
- MongoDB 不支持迁移目标端已存在的角色
- 系统账号(如 root、mysql.infoschema、mysql.session、mysql.sys 等)和内置账号不支持迁移至目标端。
- 不迁移 SSL/TLS、resource-limit 等参数。
- 不支持 role(类似权限组)、proxy(代理用户)权限迁移。
- MySQL 8.0 新增的动态权限不支持往低版本迁移。
- 不支持在迁移过程中修改账号名称。
- MongoDB仅支持迁移鉴权方式为 SCRAM-SHA-1 / SCRAM-SHA-256的账号
- 增量阶段不支持同步 CREATE USER、GRANT 和 REVOKE 等创建用户和授权相关语句。其中,MongoDB 不支持增量阶段进行账号角色迁移。
数据库账号所需权限
若您需要迁移源数据库中的账号,则配置任务过程中使用的数据库账号有如下要求(源端为 RDS MySQL 的迁移任务内置账号满足要求):
账号 | 权限 | 授权方式 |
---|---|---|
源数据库账号 | 元数据表 mysql.user、mysql.db、mysql.columns_priv、mysql.tables_priv、mysql.global_grants、mysql.procs_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.global_grants to user@'%'; grant SELECT on mysql.procs_priv to user@'%'; |
目标数据库账号 | CREATE USER 权限、GRANT OPTION 权限和元数据表 mysql.user 的 SELECT 权限目标数据库账号的权限需要包含待迁移账号所拥有的权限 | grant SELECT on mysql.user to user@'%'; grant CREATE USER on . to user@'%'; grant GRANT OPTION on . to user@'%'; |
说明
命令中的
user
需要替换为任务中使用的账号。
操作步骤
- 在 对象映射 步骤中,勾选结构迁移。
- 在传输设置中迁移账号选择为 是。
- 勾选需要迁移的账号。
- 根据提示完成后续操作。
说明
账号的组成格式为“账号@IP”,其中 IP 为允许访问源端数据库的目标库 IP 地址,您可以根据具体的业务场景对目标库 IP 进行重规划。