首批通过分布式安全可靠测评,为关键业务系统打造
用户权限说明
更新时间:2023-07-06 19:11:11
OceanBase 迁移服务(OceanBase Migration Service,OMS)迁移数据库前,请确保所有数据源已创建一个数据库用户作为迁移用户或同步用户。该用户需要具备源端和目标端数据源对应的权限。
权限列表
下表为各类数据库的迁移/同步用户需要具备的详细权限列表。创建数据源前,请确认已为指定用户赋予相关权限。
| 数据库类型 | 迁移端 | 必备的用户权限 |
|---|---|---|
| MySQL | 源端 |
|
| MySQL | 目标端 | 执行下述命令,为 MySQL 用户授权。GRANT <privilege_type> ON <db_name>.<table_name> TO '<user_name>'@'<host>' [WITH GRANT OPTION];
|
| Oracle | 源端 目标端 |
Oracle 数据库至 OceanBase 数据库的迁移和 OceanBase 数据库至 Oracle 数据库的迁移所需要的权限是一致的。详情请参见下文的《Oracle 数据库作为源端和目标端的权限说明》。 |
| OceanBase 数据库 MySQL 租户 | 源端 | OceanBase 数据库 MySQL 租户同步至 Kafka、RocketMQ 和 DataHub 时,源端迁移用户需要的权限:
config.yaml 文件中的 drc_user 和 drc_password 账号:
|
| OceanBase 数据库 MySQL 租户 | 目标端 | MySQL 迁移至 OceanBase 数据库 MySQL 租户时,OceanBase 数据库 MySQL 租户迁移用户的权限如下:
|
| OceanBase 数据库 Oracle 租户 | 源端 | OceanBase 数据库 Oracle 租户同步至 kafka、RocketMQ 和 DataHub 时:
|
| OceanBase 数据库 Oracle 租户 | 目标端 | Oracle 数据库的数据迁移至 OceanBase 数据库 Oracle 租户时,迁移用户的权限请参见下文的《OceanBase 数据库 Oracle 租户作为目标端的权限说明》。 |
| DB2 LUW 数据库 | 源端 | DB2 LUW 数据库作为源端和目标端时,用户均需要具备 sysadm 权限。 |
| DB2 LUW 数据库 | 目标端 | DB2 LUW 数据库作为源端和目标端时,用户均需要具备 sysadm 权限。 |
| DataHub | 目标端 | Datahub 根据 endpoint/ak/sk 进行鉴权,详情请参见 DataHub 权限控制。 DataHub 用户需要具备 GetProject、CreateTopic、ListTopic、GetTopic、ListShard、PutRecords、GetRecords 和 GetCursor 权限。 |
| Kafka | 目标端 | 如果 Kafka 存在鉴权,请参见 添加 Kafka 数据源。 Kafka 用户需要具备进行以下操作的权限:
|
| RocketMQ | 目标端 | 如果使用的是阿里云 RocketMQ,请参见 RocketMQ 的权限策略。 RocketMQ 用户需要具备进行以下操作的权限:
|
Oracle 数据库作为源端和目标端的权限说明
Oracle 数据库作为源端时的正向迁移和作为目标端时的反向回流需要的权限是一致的。创建用户后,不同版本的 Oracle 数据库及用户角色所需要赋予的权限说明如下。
说明:
本文提供的是非最小化权限说明,需要赋予迁移用户
SELECT ANY TRANSACTION、SELECT ANY TABLE和SELECT ANY DICTIONARY权限。
以 Oracle 数据库作为源端时,您可以对 ANY 进行细化,赋予迁移用户最小化权限以提高安全性。详情请参见 源端 Oracle 数据库的最小化权限。
12C 以下 DBA 用户权限赋予说明
如果用户的环境允许为迁移用户赋予数据库管理员(DBA)角色,且 Oracle 数据库的版本为 12C 之前的版本,则只需要执行下述语句,为迁移用户赋予 DBA 权限即可。
GRANT DBA TO <user_name>;
12C 以下非 DBA 用户权限赋予说明
如果用户环境对迁移用户的授权较为谨慎,且 Oracle 数据库的版本为 12C 之前的版本,操作如下:
授予 CONNECT 权限。
GRANT CONNECT TO <user_name>;赋予迁移用户
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 <user_name>;赋予迁移用户
LOGMINER相关权限。GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <user_name>;赋予迁移用户
CREATE TABLE和UNLIMITED TABLESPACE权限。GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <user_name>;如果迁移的 Schema 名称和
user_name一致,执行下述语句。GRANT CREATE SEQUENCE,CREATE VIEW TO <user_name>;如果迁移的 Schema 名称和
user_name不一致,执行下述语句。GRANT CREATE ANY TABLE,CREATE ANY INDEX,DROP ANY TABLE,ALTER ANY TABLE,COMMENT ANY TABLE, DROP ANY INDEX,ALTER ANY INDEX,CREATE ANY SEQUENCE,ALTER ANY SEQUENCE,DROP ANY SEQUENCE, CREATE ANY VIEW,DROP ANY VIEW,INSERT ANY TABLE,DELETE ANY TABLE,UPDATE ANY TABLE TO <user_name>;您也可以执行下述语句。
GRANT CREATE ANY TABLE,CREATE ANY INDEX,DROP ANY TABLE,ALTER ANY TABLE,COMMENT ANY TABLE, DROP ANY INDEX,ALTER ANY INDEX,CREATE ANY SEQUENCE,ALTER ANY SEQUENCE,DROP ANY SEQUENCE, CREATE ANY VIEW,DROP ANY VIEW TO <user_name>; # 加上需要迁移至 Oracle 数据库指定的表。 GRANT DELETE, INSERT, UPDATE ON <库名>.<表名> TO <user_name>;
12C 及以上 DBA 用户权限赋予说明
如果用户的环境允许为迁移用户赋予数据库管理员(DBA)角色,且 Oracle 数据库的版本为 12C 及以上的版本,则需要区分是否使用 12C/18C/19C 的可插拔数据库 Pluggable DataBase(PDB)。
非 PDB
执行下述授权语句,为迁移用户赋予 DBA 权限。
GRANT DBA TO <user_name>;执行下述语句,赋予迁移用户对
SYS.USER$表的读权限。GRANT SELECT ON SYS.USER$ TO <user_name>;
PDB
如果 Oracle 数据库迁移至 OceanBase Oracle 数据库的源端为 12C/18C/19C 的可插拔数据库 Pluggable DataBase(PDB)时,拉取 PDB 的账号需要是 Common 用户。
执行下述语句,切换至 CDB$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;
12C 及以上非 DBA 用户权限赋予说明
如果用户环境对迁移用户的授权较为谨慎,且 Oracle 数据库的版本为 12C 及以上的版本,操作如下:
非 PDB
授予 CONNECT 权限。
GRANT CONNECT TO <user_name>;执行下述语句,赋予迁移用户对
SYS.USER$表的读权限。GRANT SELECT ON SYS.USER$ TO <user_name>;赋予迁移用户
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 <user_name>;赋予迁移用户
LOGMINER相关权限。GRANT LOGMINING TO <user_name>; GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <user_name>;赋予迁移用户
CREATE TABLE和UNLIMITED TABLESPACE权限。GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <user_name>;如果迁移的 Schema 名称和
user_name一致,执行下述语句。GRANT CREATE SEQUENCE,CREATE VIEW TO <user_name>;如果迁移的 Schema 名称和
user_name不一致,执行下述语句。GRANT CREATE ANY TABLE,CREATE ANY INDEX,DROP ANY TABLE,ALTER ANY TABLE,COMMENT ANY TABLE, DROP ANY INDEX,ALTER ANY INDEX,CREATE ANY SEQUENCE,ALTER ANY SEQUENCE,DROP ANY SEQUENCE, CREATE ANY VIEW,DROP ANY VIEW,INSERT ANY TABLE,DELETE ANY TABLE,UPDATE ANY TABLE TO <user_name>;
PDB
如果 Oracle 数据库迁移至 OceanBase Oracle 数据库的源端为 12C/18C/19C 的可插拔数据库 Pluggable DataBase(PDB)时,拉取 PDB 的账号需要是 Common 用户。
授予 CONNECT 权限。
GRANT CONNECT TO <C##XXX> CONTAINER=ALL;执行下述语句,赋予迁移用户对
SYS.USER$表的读权限。GRANT SELECT ON SYS.USER$ TO <C##XXX> CONTAINER=ALL;赋予迁移用户
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 <C##XXX> CONTAINER=ALL;赋予迁移用户
LOGMINER相关权限。GRANT LOGMINING TO <C##XXX> CONTAINER=ALL; GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <C##XXX> CONTAINER=ALL;赋予迁移用户
CREATE TABLE和UNLIMITED TABLESPACE权限。GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <C##XXX> CONTAINER=ALL;如果迁移的 Schema 名称和
C##XXX一致,执行下述语句。GRANT CREATE SEQUENCE,CREATE VIEW TO <C##XXX> CONTAINER=ALL;如果迁移的 Schema 名称和
C##XXX不一致,执行下述语句。GRANT CREATE ANY TABLE,CREATE ANY INDEX,DROP ANY TABLE,ALTER ANY TABLE,COMMENT ANY TABLE, DROP ANY INDEX,ALTER ANY INDEX,CREATE ANY SEQUENCE,ALTER ANY SEQUENCE,DROP ANY SEQUENCE, CREATE ANY VIEW,DROP ANY VIEW,INSERT ANY TABLE,DELETE ANY TABLE,UPDATE ANY TABLE TO <C##XXX> CONTAINER=ALL;
OceanBase 数据库 Oracle 租户作为目标端的权限说明
目标端 OceanBase 数据库 Oracle 租户的版本不同时,权限使用也不同。
OceanBase 数据库 Oracle 租户 2.2.5 或 2.2.3 版本的权限说明
您可以通过以下两种方式赋予迁移用户权限:
方式一
执行下述语句,授予迁移用户所有权限。该方式较为简单,但赋予的权限较大。
GRANT ALL PRIVILEGES ON *.* TO <user_name>;
方式二
赋予迁移用户对 SYS 下系统视图的
SELECT权限。GRANT SELECT ON SYS.* TO <user_name>;赋予迁移用户对业务库表的各类权限。如果存在多个业务库,请分别进行授权。
GRANT SELECT,UPDATE,DELETE ON <db_name>.* TO <user_name>; GRANT CREATE,INDEX,ALTER ON <db_name>.* TO <user_name>;
OceanBase 数据库 Oracle 租户 2.2.7 及以上版本的权限说明
您可以通过以下两种方式赋予迁移用户权限:
方式一
执行下述语句,操作较为简单,但赋予用户的权限较大。
GRANT DBA TO <user_name>;方式二
赋予用户对业务库表的各类权限。如果存在多个业务库,请分别授权。
GRANT CONNECT TO <user_name>; GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <user_name>; GRANT CREATE ANY TABLE, CREATE ANY INDEX, CREATE ANY VIEW, INSERT ANY TABLE, UPDATE ANY TABLE, ALTER ANY TABLE, DELETE ANY TABLE TO <user_name>;