SQL Server 需要的权限
本文介绍 SQL Server 作为源端或对端数据源迁移或同步数据时,CloudCanal 所需的账号权限。
Tips: 如果添加数据源时使用的 SQL Server 账号已经具有 DBA/SA 权限,则可忽略以下具体权限申请。
账号创建
Tips: 如果已经准备好用于数据同步的账号则可以跳过该步骤。
- 创建 CloudCanal 登录账号用于连接数据库。
CREATE LOGIN [cloudcanal] WITH PASSWORD=N'cloudcanal', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
- 授权 CloudCanal 登录账号可以连接数据库。
GRANT CONNECT SQL TO [cloudcanal]
作为源端
- 切换到 xxx 源端数据库,为下一步分配数据库用户做准备。
USE [xxx]
- 为 CloudCanal 登录账号分配同名数据库用户。
CREATE USER [cloudcanal] FOR LOGIN [cloudcanal]
- 为 xxx 数据启用 CDC,该命令需要 sysadmin 服务器角色,应由 DBA 单独操作。
exec [xxx].sys.sp_cdc_enable_db
- 为 CloudCanal 登录账号分配 db_owner 身份,新建任务创建 CDC 表需要该权限。
ALTER ROLE [db_owner] ADD MEMBER [cloudcanal]
作为对端
Tips: 如果已经具有 xxx 数据库的 db_owner 身份则无需下列授权操作。
- 切换到 xxx 对端数据库,为下一步分配数据库用户做准备。
USE [xxx]
- 为 CloudCanal 登录账号分配同名数据库用户。
CREATE USER [cloudcanal] FOR LOGIN [cloudcanal]
- 授权结构迁移时在对端创建表结构。
GRANT CREATE TABLE TO [cloudcanal]
GRANT ALTER TO [cloudcanal] - 授权结构迁移过程中表/列备注信息的设置,以及增量 DDL 同步过程中同步源端表/列更名 DDL。
GRANT EXECUTE TO [cloudcanal]
- 授予对应的表 INSERT、UPDATE、DELETE 权限。
GRANT INSERT TO [cloudcanal]
GRANT UPDATE TO [cloudcanal]
GRANT DELETE TO [cloudcanal]
Schema 级授权
Tips: 如果已经具有 xxx 数据库的 db_owner 身份则无需下列授权操作。
单一 SCHEMA 授权
- 授权在 SCHEMA 下创建表。
GRANT ALTER ON SCHEMA::[my_schema] TO [cloudcanal]
GRANT EXECUTE ON SCHEMA::[my_schema] TO [cloudcanal] - 授予对应的表 INSERT、UPDATE、DELETE 权限。
GRANT INSERT ON SCHEMA::[my_schema] TO [cloudcanal]
GRANT UPDATE ON SCHEMA::[my_schema] TO [cloudcanal]
GRANT DELETE ON SCHEMA::[my_schema] TO [cloudcanal]
整体 SCHEMA 授权
- 授权在 SCHEMA 下创建表。
GRANT ALTER ON SCHEMA::* TO [cloudcanal]
GRANT EXECUTE ON SCHEMA::* TO [cloudcanal] - 授予对应的表 INSERT、UPDATE、DELETE 权限。
GRANT INSERT ON SCHEMA::* TO [cloudcanal]
GRANT UPDATE ON SCHEMA::* TO [cloudcanal]
GRANT DELETE ON SCHEMA::* TO [cloudcanal]