创建自建数据库用户及授权

本文为您介绍如何创建自建 MySQL 数据库实例的用户,以及该用户在数据迁移各阶段需要具备的最小权限。

背景信息

自建 MySQL 数据库实例的类型包括 VPC 内自建数据库公网 IP 自建数据库。本文创建的自建数据库用户,用于创建自建数据库实例类型的 MySQL 数据源时填写 用户名

image

创建自建数据库用户

在创建 MySQL 数据源时,您可以直接选择已经存在于数据库的用户作为数据迁移的用户。建议您为数据迁移任务创建专属的数据库用户并赋予必要的权限。

  1. 登录 MySQL 数据库。

  2. 使用CREATE USER语句创建一个新用户。

    CREATE USER '<user_name>'@'<host_name>' IDENTIFIED BY '<user_password>';

    参数

    描述

    user_name

    待创建的用户。

    host_name

    允许该用户登录的主机。如果允许该用户从任意主机登录数据库,请使用百分号(%)。

    user_password

    待创建用户的密码。

    例如,创建一个名为 test 的用户,该用户可以从任何主机登录 MySQL 数据库,登录密码设置为 password

    CREATE USER 'test'@'%' IDENTIFIED BY 'password';

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为可选参数。

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

MySQL 数据库作为目标端时,迁移用户需要具备目标端数据库的CREATECREATE VIEWINSERTUPDATEDELETE权限。

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

参数

描述

privilege_type

授予该账号CREATEINSERTUPDATE等操作权限。如果需要授予该账号所有权限,请使用 ALL。

database_name

数据库的名称。如果要授予该账号具备所有数据库的操作权限,请使用星号(*)。

table_name

表的名称。如果要授予该账号具备所有表的操作权限,请使用星号(*)。

user_name

待授权的账号。

host_name

允许该账号登录的主机,如果允许该账号从任意主机登录,请使用百分号(%)。

WITH GRANT OPTION

授予该账号使用GRANT命令的权限,该参数为可选。