全部產品
Search
文件中心

ApsaraDB for OceanBase:使用者權限說明

更新時間:Jul 01, 2024

資料轉送遷移資料庫前,請確保所有資料來源已建立一個資料庫使用者作為遷移使用者或同步處理的使用者。該使用者需要具備源端和目標端資料來源對應的許可權。

OceanBase 資料庫 MySQL 租戶作為源端的許可權說明

OceanBase 資料庫 MySQL 租戶作為源端時,遷移/同步處理的使用者需要如下許可權:

  • 目標端為 Kafka、DataHub 和 RocketMQ 等訊息佇列類型時,需要對源端待同步資料庫具備 SELECT 許可權。

    目標端為 MySQL 資料庫、OceanBase 資料庫 MySQL 租戶等資料庫類型時,需要對源端待遷移資料庫及 oceanbase 資料庫具備 SELECT 許可權。

    重要

    僅 OceanBase 資料庫 V4.0.0 及之後版本需要添加 oceanbase 資料庫的 SELECT 許可權。

  • 對於 VPC 內 OceanBase 資料庫,如果是增量資料同步的情境,您需要在 OceanBase 資料庫的 sys 租戶下建立一個使用者,並賦予其SELECT ON *.*許可權。

OceanBase 資料庫 MySQL 租戶作為目標端的許可權說明

OceanBase 資料庫 MySQL 租戶作為目標端時,遷移使用者需要以下許可權:

  • 對目標端資料庫具備 CREATECREATE VIEWSELECTINSERTUPDATEALTERINDEXDELETE 許可權。

    GRANT CREATE,CREATE VIEW,SELECT,INSERT,UPDATE,ALTER,INDEX,DELETE ON <database_name>.* TO '<user_name>';
  • 對整個租戶具備 SELECT 許可權。

    GRANT SELECT ON *.* TO '<user_name>';

OceanBase 資料庫 Oracle 租戶作為源端的許可權說明

OceanBase 資料庫 Oracle 租戶作為源端時,遷移/同步處理的使用者需要以下許可權:

  • 對於 OceanBase 資料庫 V2.2.70 之前的版本,源端使用者需要的許可權為 GRANT SELECT ON *.* TO <user_name>;

  • 對於 OceanBase 資料庫 V2.2.70 及之後的版本,源端使用者需要的許可權為 GRANT DBA TO <user_name>;

OceanBase 資料庫 Oracle 租戶作為目標端的使用者權限賦予說明

遷移 Oracle 資料庫的資料至 OceanBase 資料庫 Oracle 租戶時,目標端的版本不同,許可權使用也不同。

目標端版本

許可權說明

V2.2.5 或 V2.2.3

您可以通過以下兩種方式賦予遷移使用者權限:

  • 方式一

    • 執行下述語句,授予遷移使用者所有許可權。該方式較為簡單,但賦予的許可權較大。

      GRANT ALL PRIVILEGES ON *.* TO <user_name>;
  • 方式二

    1. 如果是 VPC 內 OceanBase 資料庫,需要賦予遷移使用者對 sys 租戶下系統檢視表的SELECT許可權。

      GRANT SELECT ON SYS.* TO <user_name>;
    2. 賦予遷移使用者對業務庫表的各類許可權。如果存在多個業務庫,請分別進行授權。

      GRANT SELECT, UPDATE, DELETE ON <db_name>.* TO <user_name>;
      GRANT CREATE, INDEX, ALTER ON <db_name>.* TO <user_name>;

V2.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>;

Oracle 資料庫作為源端的許可權說明

建立使用者後,不同版本的 Oracle 資料庫及使用者角色所需要賦予的許可權說明如下。

說明
  • 對於 ADG 備庫,有時可能出現授權後許可權未生效的問題。此時,您需要在備庫執行命令ALTER SYSTEM FLUSH SHARED_POOL;來重新整理 Shared Pool。

  • 本文提供的是非最小化許可權說明,需要賦予遷移使用者 SELECT ANY TRANSACTIONSELECT ANY TABLESELECT ANY DICTIONARY 許可權。以 Oracle 資料庫作為源端時,您可以對 ANY 進行細化,賦予遷移使用者最小化許可權以提高安全性。詳情請參見 源端 Oracle 資料庫的最小化許可權

12C 之前版本 DBA 使用者權限賦予說明

如果使用者的環境允許為遷移使用者賦予資料庫管理員(DBA)角色,且 Oracle 資料庫的版本為 12C 之前的版本,則只需要執行下述語句,為遷移使用者賦予 DBA 許可權即可。

GRANT DBA TO <user_name>;

12C 之前版本非 DBA 使用者權限賦予說明

如果使用者環境對遷移使用者的授權較為謹慎,且 Oracle 資料庫的版本為 12C 之前的版本,操作如下:

  1. 授予 CONNECT 許可權。

    GRANT CONNECT TO <user_name>;
  2. 賦予遷移使用者 CREATE SESSIONALTER SESSIONSELECT ANY TRANSACTIONSELECT ANY TABLESELECT ANY DICTIONARY 許可權。

    GRANT CREATE SESSION, ALTER SESSION, 
    SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <user_name>;
  3. 賦予遷移使用者 LOGMINER 相關許可權。

    GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <user_name>;
  4. 賦予遷移使用者 CREATE TABLEUNLIMITED TABLESPACE 許可權。

    GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <user_name>;
  5. 如果遷移的 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

    1. 執行下述授權語句,為遷移使用者賦予 DBA 許可權。

      GRANT DBA TO <user_name>;
    2. 執行下述語句,賦予遷移使用者對 SYS.USER$ 表的讀許可權。

      GRANT SELECT ON SYS.USER$ TO <user_name>;
  • PDB

    如果 Oracle 資料庫遷移至 OceanBase Oracle 資料庫的源端為 12C/18C/19C 的可插拔資料庫 Pluggable DataBase(PDB)時,拉取 PDB 的帳號需要是 Common 使用者。

    1. 執行下述語句,切換至 CDB$ROOT。

      ALTER SESSION SET CONTAINER=CDB$ROOT;

      每個 Common 使用者都可以串連到 Root 容器(被命名為 CDB$ROOT)、任何有串連許可權的 PDB,並執行相關操作。

    2. 執行下述語句,賦予遷移使用者 DBA 許可權。

      GRANT DBA TO C##XXX CONTAINER=ALL;
    3. 執行下述語句,賦予遷移使用者對 SYS.USER$ 表的讀許可權。

      GRANT SELECT ON SYS.USER$ TO C##XXX CONTAINER=ALL;

12C 及之後版本非 DBA 使用者權限賦予說明

如果使用者環境對遷移使用者的授權較為謹慎,且 Oracle 資料庫的版本為 12C 及之後的版本,操作如下:

  • 非 PDB

    1. 授予 CONNECT 許可權。

      GRANT CONNECT TO <user_name>;
    2. 執行下述語句,賦予遷移使用者對 SYS.USER$ 表的讀許可權。

      GRANT SELECT ON SYS.USER$ TO <user_name>;
    3. 賦予遷移使用者 CREATE SESSIONALTER SESSIONSELECT ANY TRANSACTIONSELECT ANY TABLESELECT ANY DICTIONARY 許可權。

      GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <user_name>;
    4. 賦予遷移使用者 LOGMINER 相關許可權。

      GRANT LOGMINING TO <user_name>;
      GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <user_name>;
    5. 賦予遷移使用者 CREATE TABLEUNLIMITED TABLESPACE 許可權。

      GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <user_name>;
    6. 如果遷移的 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 使用者。

    1. 授予 CONNECT 許可權。

      GRANT CONNECT TO <C##XXX> CONTAINER=ALL;
    2. 執行下述語句,賦予遷移使用者對 SYS.USER$ 表的讀許可權。

      GRANT SELECT ON SYS.USER$ TO <C##XXX> CONTAINER=ALL;
    3. 賦予遷移使用者 CREATE SESSIONALTER SESSIONSELECT ANY TRANSACTIONSELECT ANY TABLESELECT ANY DICTIONARY 許可權。

      GRANT CREATE SESSION, ALTER SESSION, 
      SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <C##XXX> CONTAINER=ALL;
    4. 賦予遷移使用者 LOGMINER 相關許可權。

      GRANT LOGMINING TO <C##XXX> CONTAINER=ALL;
      GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <C##XXX> CONTAINER=ALL;
    5. 賦予遷移使用者 CREATE TABLEUNLIMITED TABLESPACE 許可權。

      GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <C##XXX> CONTAINER=ALL;
    6. 如果遷移的 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;

MySQL 資料庫作為源端的許可權說明

  • 資料庫使用者需要對待遷移的資料庫具備讀許可權。如果是 MySQL 資料庫 V8.0,請額外賦予 SHOW VIEW 許可權。

    GRANT SELECT ON <database_name>.* TO '<user_name>';
  • MySQL 資料庫增量同步處理時,資料庫使用者需要具備 REPLICATION CLIENTREPLICATION SLAVESELECT *.* 許可權。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '<user_name>' [WITH GRANT OPTION];
    GRANT SELECT ON *.* TO '<user_name>';
    說明
    • 增量同步處理時,如果缺少源端所有表的讀許可權,可能導致專案異常中斷。

    • WITH GRANT OPTION為選擇性參數。

TiDB 資料庫作為源端的許可權說明

  • 資料庫使用者需要對待遷移的資料庫具備讀許可權。

    GRANT SELECT ON <database_name>.* TO '<user_name>';
  • TiDB 資料庫增量同步處理時,資料庫使用者需要具備 REPLICATION CLIENTREPLICATION SLAVESELECT *.* 許可權。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '<user_name>' [WITH GRANT OPTION];
    GRANT SELECT ON *.* TO '<user_name>';

ADB 資料庫作為目標端的許可權說明

AnalyticDB for MySQL(簡稱 ADB)支援針對不同的許可權粒度授予不同的許可權,以達到許可權控制的目的。詳情請參見 許可權模型

ADB 支援以下四個粒度的許可權控制:

  • GLOBAL:叢集層級

  • DB:資料庫層級

  • TABLE:表層級

  • COLUMN:列(欄位)層級

Kafka 作為目標端的許可權說明

如果 Kafka 存在鑒權,請參見 建立 Kafka 資料來源

Kafka 使用者需要具備進行以下操作的許可權:

  • 建立和查看 Topic

  • 查看 Topic Partition 資訊

  • 寫入 Record

  • 讀取 Record

DataHub 作為目標端的許可權說明

DataHub 根據 endpoint/ak/sk 進行鑒權。

DataHub 使用者需要具備 GetProjectCreateTopicListTopicGetTopicListShardPutRecordsGetRecordsGetCursor 許可權。

RocketMQ 作為目標端的許可權說明

RocketMQ 作為目標端時,同步處理的使用者需要具備進行以下操作的許可權:

  • 建立和查看 Topic

  • 查看 Topic MessageQueue 資訊

  • 寫入 Record

  • 讀取 Record