---
title: "用户权限说明 | OceanBase 文档中心"
description: 用户权限说明 OceanBase 迁移服务（OceanBase Migration Service，OMS）社区版迁移数据库前，请确保所有数据源已创建一个数据库用户作为迁移用户。该用户需要具备源端和目标端数据源对应的权限。 创建数据库用户 您在使用 OMS 社区版的数据迁移功能前，请先在源端和目标端数据库中，为数据迁…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*L03BS6f-o40AAAAAAAAAAAAADiGDAQ/original) 迁移服务 OMSV 3.3.0 社区版

# 用户权限说明

更新时间：2023-09-05 15:35:59

[编辑](https://github.com/oceanbase/oms-doc/edit/V3.3.0/zh-CN/300.user-guide/200.data-migration/200.user-permission-settings.md)  

OceanBase 迁移服务（OceanBase Migration Service，OMS）社区版迁移数据库前，请确保所有数据源已创建一个数据库用户作为迁移用户。该用户需要具备源端和目标端数据源对应的权限。

## 创建数据库用户

您在使用 OMS 社区版的数据迁移功能前，请先在源端和目标端数据库中，为数据迁移项目创建专用的数据库用户。

### 创建 drc_user 用户

OceanBase 数据库需要在 sys 租户下创建用户，用于 OMS 社区版向 OceanBase 数据库消费 Clog 日志时进行鉴权。

请注意用户名和密码需要和 OMS 部署配置文件 `config.yaml` 中的 `drc_user`、`drc_password` 配置项保持一致。

- 创建用户

  ```sql
  CREATE USER <drc_user> IDENTIFIED BY <drc_password>;

  ```
 - 赋予权限

  ```sql
  GRANT SELECT ON OCEANBASE.* TO <drc_user>;

  ```

### 创建 __oceanbase_inner_drc_user 用户

如果您需要迁移无主键表，执行数据迁移项目前，请在源端 OceanBase 社区版 MySQL 租户创建 `__oceanbase_inner_drc_user` 用户。

- 创建用户

  ```sql
  CREATE USER __oceanbase_inner_drc_user IDENTIFIED BY '<password>';

  ```sql
  GRANT SELECT ON *.* TO __oceanbase_inner_drc_user;

  ```

### 创建 MySQL 数据库用户

1. 登录自建的 MySQL 数据库。
 2. 在自建 MySQL 数据库中创建用户，用于数据迁移。

   ```sql
   CREATE USER '<user_name>'@'<host_name>' IDENTIFIED BY '<password>';

   ```

   | 参数 | 描述 |
   | --- | --- |
   | user_name | 待创建的账号。 |
   | host_name | 允许该账号登录的主机，如果允许该账号从任意主机登录数据库，请使用百分号（%）。 |
   | password | 账号的密码。 |

### 创建 OceanBase 数据库社区版用户

OceanBase 数据库社区版用户权限管理的详细操作，请参见《OceanBase 数据库社区版管理员指南》。

1. 以系统管理员身份登录 OceanBase 数据库社区版。
 2. 在 OceanBase 数据库社区版中创建用户，用于数据迁移。

   以创建用户 OMS_TEST 为例，创建语句如下。

   ```sql
   CREATE USER <OMS_TEST> IDENTIFIED BY '<password>';

   ```

## 权限说明

### MySQL 数据库作为源端的权限说明

- 数据库用户需要对待迁移的数据库具备读权限。

  ```sql
  GRANT SELECT ON <database_name>.* TO '<user_name>';

  ```
 - MySQL 增量同步时，数据库用户需要具备 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 权限。

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

  ```

  > **说明**
  >
  >  
  >
  > `WITH GRANT OPTION` 为可选参数。

  如果您在添加 MySQL 数据源时，勾选了 **增量同步时，允许 OMS 向该实例自动写入增量心跳数据**，OMS 会向对应的 MySQL 数据库创建并更新 `drc.heartbeat` 表。此时，MySQL 数据库用户需要具备创建表、写表的权限。添加数据源详情请参见 [添加 MySQL 数据源](https://www.oceanbase.com/docs/community-oms-cn-10000000000296148)。

     - 赋予数据库用户创建表的权限

      ```sql
      GRANT CREATE ON drc.heartbeat TO '<user_name>';

      ```
     - 赋予数据库用户写表的权限

      ```sql
      GRANT INSERT, UPDATE, DELETE ON drc.heartbeat TO '<user_name>';

      ```
 - 同步增量日志拉取用户需要具备 `SELECT *.*` 权限。

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

  ```
 - 为 MySQL 数据库开启 Binlog。

  OMS 会基于全量迁移任务，读取 MySQL 的 Binlog，实时同步增量数据至目标端。数据迁移项目的预检查环节也会检查 MySQL 数据库的 Binlog 配置。使用 OMS 迁移 MySQL 数据库的增量数据前，请先在 MySQL 中开启 Binlog。

     1. 登录自建 MySQL 数据库所在的部署机。
     2. 执行下述命令，修改 MySQL 数据库的配置文件 `my.cnf`。

       配置文件 `my.cnf` 的默认路径为 `/etc/my.cnf`。

       ```sql
       log_bin=mysql_bin
       binlog_format=row
       binlog_row_image=full //如果源数据库为 MySQL 5.6 及以上的版本，需要设置该项。

       ```
     3. 执行以下命令，重启 MySQL 数据库。

       `$Mysql_Dir` 需要替换为 MySQL 数据库的安装路径。

       ```sql
       [$Mysql_Dir]/bin/mysqladmin -u root -p ******
       [$Mysql_Dir]/bin/safe_mysqld &

       ```
     4. 登录自建的 MySQL 源数据库，执行如下 SQL 语句，确认 Binlog 功能已启用。

       ```sql
       show variables like '%log_bin%';

       ```

       回显信息中，`log bin` 和 `sql log bin` 的状态均为 ON，表示已启用 Binlog 功能。

### MySQL 数据库作为目标端的权限说明

执行下述命令，为 MySQL 用户授权。

```sql
GRANT <privilege_type> ON <database_name>.<table_name> TO '<user_name>'@'<host_name>' [WITH GRANT OPTION];

```

| 参数 | 描述 |
| --- | --- |
| privilege_type | 授予该账号 `SELECT`、`INSERT` 和 `UPDATE` 等操作权限。如果需要授予该账号所有权限，请使用 ALL。 |
| database_name | 数据库的名称。如果要授予该账号具备所有数据库的操作权限，请使用星号（*）。 |
| table_name | 表的名称。如果要授予该账号具备所有表的操作权限，请使用星号（*）。 |
| user_name | 待授权的账号。 |
| host_name | 允许该账号登录的主机，如果允许该账号从任意主机登录，请使用百分号（%）。 |
| WITH GRANT OPTION | 授予该账号使用 `GRANT` 命令的权限，该参数为可选。 |

### OceanBase 社区版作为源端的权限说明

以用户 oms_user 为例，执行下述语句赋予该用户相应的权限。

```sql
GRANT SELECT ON *.* TO <oms_user> WITH GRANT OPTION;//整个租户迁移
GRANT INSERT,UPDATE,DELETE ON *.* TO <oms_user>;//反向增量

//源端有无主键表，在租户下建
CREATE USER '<__oceanbase_inner_drc_user>' IDENTIFIED BY '<password>';
GRANT SELECT ON *.* TO '<__oceanbase_inner_drc_user>';

```

当需要从 OceanBase 社区版消费增量日志时，需要在待迁移的 OceanBase 集群 sys 租户下创建 drc user 用户，然后在 OMS 社区版 yaml 文件中指定。详情请参见《部署 OMS 社区版》。

### OceanBase 社区版作为目标端的权限说明

迁移 MySQL 数据库的数据至 OceanBase 社区版时，OceanBase 社区版迁移用户的权限如下：

- 对目标端数据库具备 `CREATE`、`CREATE VIEW`、`SELECT`、`INSERT`、`UPDATE` 和 `DELETE` 权限。

  ```sql
  GRANT CREATE, CREATE VIEW, SELECT, INSERT, UPDATE, DELETE ON <database_name>.* TO '<user_name>';

  ```
 - 对整个租户具备 `SELECT` 权限。

  ```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
