首批通过分布式安全可靠测评,为关键业务系统打造
用户权限说明
更新时间:2023-06-25 10:19:25
OceanBase 迁移服务(OceanBase Migration Service,OMS)迁移数据库前,请确保所有数据源已创建一个数据库用户作为迁移用户。该用户需要具备不同数据源对应的权限。
权限列表
下表为各类数据库的迁移/同步用户需要具备的详细权限列表。创建数据源前,请确认已为指定用户赋予相关权限。
| 数据库类型 | 迁移端 | 必备的用户权限 |
|---|---|---|
| MySQL | 源端 |
|
| Oracle | 源端 | Oracle 数据库的数据迁移至 OceanBase Oracle 数据库,以及Oracle 数据同步至 DataHub 时,迁移用户的权限请参见下文的 Oracle 源端数据源权限说明。 |
| OceanBase 数据库 MySQL 租户 | 源端 | OceanBase 数据库 MySQL 租户同步至 Kafka、RocketMQ 和 DataHub 时,源端迁移用户需要的权限:
config.yaml 文件中的 drc_user 和 drc_password 账号:
|
| OceanBase 数据库 MySQL 租户 | 目标端 | MySQL 迁移至 OceanBase 数据库 MySQL 租户时,目标端迁移用户的权限如下:
|
| OceanBase 数据库 Oracle 租户 | 源端 | OceanBase 数据库 Oracle 租户同步至 kafka、RocketMQ 和 DataHub 时:
|
| OceanBase 数据库 Oracle 租户 | 目标端 | Oracle 数据库的数据迁移至 OceanBase Oracle 数据库时,迁移用户的权限请参见下文的 OceanBase 数据库 Oracle 租户目标端权限说明。 |
Oracle 源端数据源权限说明
您在创建 Oracle 数据库至 OceanBase 数据库 Oracle 租户的数据迁移项目前,请先在 Oracle 数据库上准备一个迁移账号,并赋予所需权限。
以创建用户 OMS_TEST 为例,创建语句如下。
CREATE USER <OMS_TEST> IDENTIFIED BY 123456;
执行如下语句,确认 Oracle 数据库的版本。
SELECT VERSION FROM V$INSTANCE;
OceanBase 源端数据源可以通过以下两种方式赋予迁移用户权限。如果用户的环境允许为迁移用户赋予数据库管理员(DBA)角色,请使用方式一。如果不允许,请使用方式二。
方式一
执行下述授权语句,为迁移用户赋予 DBA 权限。
GRANT DBA TO <OMS_TEST>;如果 Oracle 数据库的版本为 12C 之前的版本,无需进行该步操作。如果是 12C 及以上版本,您需要执行下述语句,赋予迁移用户对
SYS.USER$表的读权限。GRANT SELECT ON SYS.USER$ TO <OMS_TEST>;
方式二
授予 CONNECT 权限。
GRANT CONNECT TO <OMS_TEST>;如果 Oracle 数据库为 12C 及以上的版本,请赋予对
SYS.USER$表的读权限。GRANT SELECT ON SYS.USER$ TO <OMS_TEST>;赋予迁移用户
CREATE SESSION、ALTER SESSION、SELECT ANY TRANSACTION、SELECT ANY TABLE和SELECT ANY DICTIONARY权限。GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <OMS_TEST>;赋予迁移用户
LOGMINER相关权限。Oracle 数据库为 12C 以下的版本,执行下述语句。
GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <OMS_TEST>;Oracle 数据库为 12C 及以上的版本,执行下述语句。
GRANT LOGMINING TO <OMS_TEST>;
赋予迁移用户
CREATE TABLE和UNLIMITED TABLESPACE权限。GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <OMS_TEST>;赋予迁移用户对迁移源端表的
DELETE、INSERT和UPDATE权限。如果迁移的 Schema 名称和 OMS_TEST 一致,则可以跳过该步骤。GRANT DELETE, INSERT, UPDATE ON <库名.表名> TO <OMS_TEST>;您也可以赋予迁移用户对所有表的
DELETE、INSERT和UPDATE权限。GRANT INSERT ANY TABLE,DELETE ANY TABLE,UPDATE ANY TABLE to <OMS_TEST>;
当 Oracle 数据库迁移至 OceanBase Oracle 数据库的源端为 12C/18C/19C 的可插拔数据库 Pluggable DataBase(PDB)时,拉取 PDB 的账号需要是 Common 用户。
执行下述语句,切换至目标容器(以 Root 容器为例)。
ALTER SESSION SET CONTAINER=CDB$root;每个 Common 用户都可以连接到 Root 容器(被命名为
CDB$root)、任何有连接权限的 PDB,并执行相关操作。执行下述语句,赋予迁移用户 DBA 权限。
GRANT DBA TO C##XXX CONTAINER=ALL;执行下述语句,赋予迁移用户对
SYS.USER$表的读权限。GRANT SELECT ON SYS.USER$ TO C##XXX CONTAINER=ALL;
OceanBase Oracle 目标端权限说明
首先您需要创建迁移用户,以 OMS_TEST 为例,创建语句如下。
CREATE USER <OMS_TEST> IDENTIFIED BY 123456;
OceanBase Oracle 目标端的版本不同时,权限使用也不同:
对于 OceanBase Oracle V2.2.70 之前的版本,您可以通过以下两种方式赋予迁移用户权限:
方式一
执行下述语句,授予迁移用户所有权限。该方式较为简单,但赋予的权限较大。
GRANT ALL PRIVILEGES ON *.* TO <OMS_TEST>;方式二
赋予迁移用户对 SYS 下系统视图的
SELECT权限。GRANT SELECT ON SYS.* TO <OMS_TEST>;赋予迁移用户对业务库表的各类权限。如果存在多个业务库,请分别进行授权。
GRANT SELECT,UPDATE,DELETE ON OMS_TEST.* TO <OMS_TEST>; GRANT CREATE,INDEX,ALTER ON OMS_TEST.* TO <OMS_TEST>;
对于 OceanBase Oracle V2.2.70 及以上的版本,您可以通过以下两种方式赋予迁移用户权限:
方式一
执行下述语句,操作较为简单,但赋予用户的权限较大。
GRANT DBA TO <OMS_TEST>;方式二
赋予用户对业务库表的各类权限。如果存在多个业务库,请分别授权。
GRANT CONNECT TO <OMS_TEST>; GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <OMS_TEST>; GRANT CREATE ANY TABLE,INSERT ANY TABLE,UPDATE ANY TABLE,DELETE ANY TABLE TO <OMS_TEST>;
OceanBase 数据库增量用户权限使用说明:
OceanBase 集群还需要在 SYS 租户下创建用户(以创建 OMS_DRC 账号为例),用于 OMS 向 OceanBase 集群消费 Clog 日志时进行鉴权。
请注意用户名和密码需要和 OMS 部署配置文件 config.yaml 中的 drc_user、drc_password 配置项保持一致。
CREATE USER OMS_DRC IDENTIFIED BY 'XXXXXX';
GRANT SELECT ON *.* TO OMS_DRC;