更新时间:2024-03-27 GMT+08:00

目标数据库用户权限是否足够

MySQL迁移场景

表1 目标数据库用户权限是否足够

预检查项

目标数据库用户权限是否足够。

描述

检查用户提供的目标数据库账号权限是否符合迁移要求,若权限不够,会导致迁移失败。

不通过提示处理建议

不通过原因:目标数据库的用户账号权限不够,需要具备SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、WITH GRANT OPTION这些权限。当目标库为是8.0.14-8.0.18版本,还需要SESSION_VARIABLES_ADMIN权限。

处理建议:查看提供的目标库账号权限是否符合迁移要求。

不通过原因:用户基本权限不足。

处理建议:查看对应数据库账号权限是否符合迁移要求。

PostgreSQL同步场景

表2 目标数据库用户权限是否足够

预检查项

目标数据库用户权限是否足够。

描述

按照需要同步对象的范围,授予不同的权限,有不同的要求。

  • 库级同步
    • 如果目标库不是postgres,需要具有CREATEDB权限。
    • 如果目标库是postgres,需要具有postgres库的CONNECT和CREATE权限、对模式public的USAGE和CREATE权限。
  • 表级同步
    • 如果需要同步库,需要具有CREATEDB权限。
    • 如果需要同步模式,需要具有模式所在库的CONNECT权限、模式所在库上的CREATE权限。
    • 如果需要同步模式下的对象,需要具有模式所在库的CONNECT权限、对象所在模式的USAGE权限、对象所在模式上的CREATE权限。
  • 同步用户:需要具有CREATEROLE权限。
  • 同步用户权限:同步用户的default privilege需要为系统默认值,否则可能导致目标库与源库的对象权限不一致。

不通过提示处理建议

不通过原因:填写的目标数据库用户权限不足,需要具备CREATEDB权限。

处理建议:在目标数据库执行如下语句,赋予迁移账号CREATEDB权限。

alter role username with createdb;

不通过原因:用户没有SCHEMA的USAGE权限。

处理建议:在目标数据库执行如下语句,赋予迁移账号CREATEDB权限。

grant usage on schema schemaname to username;

不通过原因:用户没有创建TABLE的权限。

处理建议:在目标数据库执行如下语句,赋予迁移账号创建TABLE权限。

grant create on schema schemaname to username;

不通过原因:用户没有创建SCHEMA的权限。

处理建议:在目标数据库执行如下语句,赋予迁移账号创建SCHEMA的权限。

grant create on database to username;

不通过原因:库级同步,目标库为PostgreSQL 15时,全量或增量同步的过程中,可能会因为目标库默认schema:public权限不足导致任务同步失败。

处理建议:如果是表级同步,可以在目标库创建数据库;如果是库级同步,可以在任务进入全量同步后,在目标库下授予目标库schema:public的USAGE和CREATE权限,参考SQL如下:

grant usage,create on schema public to username;

MongoDB迁移、同步场景

表3 目标数据库用户权限是否足够

预检查项

目标数据库用户权限是否足够。

描述

检查用户提供的目标数据库账号权限是否符合迁移要求,若权限不够,会导致迁移失败。

不通过提示处理建议

不通过原因:目标数据库连接失败,导致该项检查无法进行。

处理建议:查看目标数据库连接是否成功。

不通过原因:连接目标数据库的用户需要有admin的dbAdminAnyDatabase权限,有config的read权限,有目标数据库的readWrite权限。

处理建议:为连接目标数据库的用户赋权,参考:

db.grantRolesToUser("用户名",[{role:"dbAdminAnyDatabase",db:"admin"}, {role:"read",db:"config"}, {role:"readWriteAnyDatabase",db:"admin"}])

不通过原因:连接目标数据库的用户权限需要有待迁移库的readWrite权限。

处理建议:为连接目标数据库的用户赋权,参考:

db.grantRolesToUser("用户名",[{role:"readWriteAnyDatabase",db:"admin"}])

不通过原因:连接目标数据库的用户权限需要有config的read权限。

处理建议:为连接目标数据库的用户赋权,参考:

db.grantRolesToUser("用户名",[{role:"read",db:"config"}])

不通过原因:连接目标数据库的用户权限需要有admin的dbAdminAnyDatabase权限。

处理建议:为连接目标数据库的用户赋权,参考:

db.grantRolesToUser("用户名",[{role:"dbAdminAnyDatabase",db:"admin"}])

不通过原因:连接目标数据库的用户权限需要有admin的clusterManager权限。

处理建议:为连接目标数据库的用户赋权,参考:

db.grantRolesToUser("用户名",[{role:"clusterManager",db:"admin"}])

Oracle->MySQL、Oracle->GaussDB(for MySQL)数据库同步场景

表4 目标数据库用户权限是否足够

预检查项

目标数据库用户权限是否足够。

描述

检查用户提供的目标数据库账号权限是否符合迁移要求,若权限不够,会导致迁移失败。

不通过提示处理建议

不通过原因:连接目标数据库的用户权限不足,迁移时需要对所有数据库具备SELECT, CREATE, DROP, DELETE, INSERT, UPDATE, INDEX, EVENT, RELOAD, CREATE VIEW, CREATE ROUTINE, TRIGGER, ALTER这些权限。

处理建议:查看提供的目标库账号权限是否符合迁移要求。

Oracle->PostgreSQL数据库同步场景

表5 目标数据库用户权限是否足够

预检查项

目标数据库用户权限是否足够。

描述

检查用户提供的目标数据库账号权限是否符合迁移要求,若权限不够,会导致迁移失败。

不通过提示处理建议

不通过原因:目标数据库用户权限不足。

处理建议:建议给用户赋予在目标库创建数据库和表的权限后重新校验,参考命令:

ALTER ROLE targetUser WITH CREATEDB;

其中,上述命令中“targetUser”表示目标库当前的用户。

MySQL->PostgreSQL同步场景

表6 目标数据库用户权限是否足够

预检查项

目标数据库用户权限是否足够。

描述

检查用户提供的目标数据库账号权限是否符合MySQL到PostgreSQL的同步要求,若权限不够,会导致同步失败。

不通过提示处理建议

不通过原因:目标数据库中的部分表权限不足,需要具备INSERT、SELECT、UPDATE、DELETE权限。

处理建议:请为缺少权限的表添加所需权限,然后重试。

添加权限语句示例如下:

GRANT INSERT,SELECT,UPDATE, DELETE ON db_name.table_name TO 'user'@'host';

PostgreSQL->PostgreSQL同步场景

表7 目标数据库用户权限是否足够

预检查项

目标数据库用户权限是否足够。

描述

检查用户提供的目标数据库账号权限是否符合PostgreSQL到PostgreSQL的同步要求,若权限不够,会导致同步失败。

不通过提示处理建议

不通过原因:同步任务填写的连接目标数据库的用户权限不足,需要具备CREATEDB 权限。

处理建议:在目标数据库执行如下语句,赋予迁移账号CREATEDB权限。

ALTER ROLE role_name WITH CREATEDB;

MySQL灾备场景

表8 目标数据库用户权限是否足够

预检查项

目标数据库用户权限是否足够。

描述

查用户提供的目标数据库账号权限是否符合迁移要求,若权限不够,会导致灾备失败。

不通过提示处理建议

不通过原因:目标数据库权用户限不足,需要具备GRANT权限。

处理建议:在目标库执行如下语句,为用户赋予相应权限后重试。

GRANT SELECT, CREATE, DROP, DELETE, INSERT, UPDATE, SHOW VIEW, EVENT, LOCK TABLES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'u1' WITH GRANT OPTION;

DDM>Oracle同步场景

表9 目标数据库用户权限是否足够

预检查项

目标数据库用户权限是否足够。

描述

检查用户提供的目标数据库账号权限是否符合DDM到Oracle同步要求,若权限不够,会导致同步失败。

不通过提示处理建议

不通过原因:同步任务填写的连接目标数据库的用户权限不足。

处理建议:建议使用具有DBA权限的账号,或者为用户赋予相应权限后重新预校验。

目标库为GaussDB同步场景

表10 源数据库用户权限是否足够

预检查项

源数据库用户权限是否足够。

描述

检查用户提供的源数据库账号权限是否符合迁移要求。

不通过提示处理建议

不通过原因:连接源数据库的用户权限不足,用户需要具备schema的select权限。

处理建议:请使用对象的Owner用户或者系统管理员用户授予缺少的权限。

不通过原因:使用COPY接口同步数据时,用户缺少相关系统表 public.gs_copy_summary,public.pgxc_copy_error_log的权限。

处理建议:请使用对象的Owner用户或者系统管理员用户授权。赋权参考命令:

grant all privileges on table public.os copy summary.public.pgxc copy error_log to user1;