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

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

MySQL迁移场景

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

预检查项

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

描述

检查用户提供的源数据库账号权限是否符合迁移要求,全量迁移和增量迁移时,所需源数据库账号权限不同。

  • 当为全量迁移时,需要具备SELECT、SHOW VIEW、EVENT这些权限。
  • 当为增量迁移时,需要具备SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT这些权限。

若权限不够,会导致迁移失败。

不通过提示处理建议

不通过原因:连接源数据库的用户权限不足,全量迁移时需要具备SELECT、SHOW VIEW、EVENT这些权限。

处理建议:为缺失权限的数据库添加权限。

不通过原因:连接源数据库的用户权限不足,增量迁移时需要具备SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT这些权限,如果是灾备场景还需具备CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX权限。

处理建议:为缺失权限的数据库添加权限。

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

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

说明:

DRS要求的MySQL权限以及授权操作,请参见DRS要求的MySQL权限有哪些

Microsoft SQL Server为源场景

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

预检查项

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

描述

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

不通过提示处理建议

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

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

不通过提示处理建议

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

处理建议:建议授予源库账号db_owner或者sysadmin权限。

授予db_owner权限语句参考:

exec sp_addrolemember 'db_owner', 'user_name';

添加用户到sysadmin语句参考:

EXECUTE sys.sp_addsrvrolemember
    @loginame = N'user_name',
    @rolename = N'sysadmin';

PostgreSQL同步场景

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

预检查项

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

描述

不同类型的同步任务,需授予同步账户不同权限。

  • 全量同步:数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,系统表pg_catalog.pg_authid的select权限(用于同步用户的密码)。
  • 全量+增量同步:数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,系统表pg_catalog.pg_authid的select权限(用于同步用户的密码),无主键表的UPDATE、DELETE和TRUNCATE权限,REPLICATION连接权限。

若权限不够,会导致迁移失败。

不通过提示处理建议

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

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

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

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

不通过原因:连接源数据库的用户权限不足,全量迁移时需要具备SELECT、REFERENCES、TRIGGER、EXECUTE和USAGE权限。

处理建议:更换迁移账号或者对迁移账号进行授权。

不通过原因:没有复制权限,需要在配置文件pg_hba.conf配置允许迁移实例和迁移账号进行复制连接的权限。

处理建议

配置该账号的复制连接权限。

打开配置文件pg_hba.conf,配置如下参数,重启数据库生效。

host replication ***(dbuser) 0.0.0.0/0 method

完成迁移之后删除这条记录,重启数据库生效。

不通过原因:源数据库参数max_wal_senders取值太小。

处理建议:建议将配置文件postgresql.conf中的max_wal_senders参数值增大,如+5,+10等等。

不通过原因:数据库不可用。

处理建议:请联系华为技术支持人员处理。

待确认提示处理建议

待确认原因:源数据库中存在只有SUPERUSER用户才能创建的对象,而目标库连接用户不是SUPERUSER用户,这些对象将被忽略。

处理建议:使用SUPERUSER用户连接目标库,或确认这些对象可以被忽略。

MongoDB迁移、同步场景

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

预检查项

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

描述

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

不通过提示处理建议

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

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

不通过原因:连接源数据库的用户权限需要有admin库的readAnyDatabase权限和local库的read权限。

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

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

不通过原因:连接源数据库的用户权限需要有admin库的readAnyDatabase权限和config库的read权限。

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

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

不通过原因:连接源数据库的用户权限不足,需要连接源数据库mongos节点的用户需要有admin数据库的readAnyDatabase权限,有config数据库的read权限,连接源数据库shard节点的用户需要有admin数据库的readAnyDatabase权限,有local数据库的read权限。

处理建议:为连接源数据库的用户赋权。

  • mongos参考:
    db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"config"}])
  • shard参考:
    db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"local"}])

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

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

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

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

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

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

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

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

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

Oracle迁移场景

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

预检查项

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

描述

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

不通过提示处理建议

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

处理建议:建议将迁移用户赋予CREATE SESSION、SELECT ANY TRANSACTION、SELECT ANY TABLE、SELECT ANY DICTIONARY权限后重新校验。

说明:

当目标库为PostgreSQL时,还需要SELECT ANY SEQUENCE权限。

MySQL->PostgreSQL同步场景

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

预检查项

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

描述

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

不通过提示处理建议

不通过原因:连接源数据库的用户权限不足,增量迁移时需要具备INFORMATION_SCHEMA库SELECT权限。

处理建议:为缺失权限的数据库添加相应权限。

参考命令如下:

grant select on [dbname];

GaussDB为源同步场景

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

预检查项

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

描述

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

不通过提示处理建议

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

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