CDC 账号需要什么权限
数据库 CDC 采集通常走两条路:读表数据要 SELECT,拉取变更日志要复制相关权限。以 MySQL 为例,日志型采集需要 SELECT、REPLICATION SLAVE、REPLICATION CLIENT,部分工具为做一致性快照还需要 RELOAD 与 SHOW DATABASES。原则是按需最小授权、单独建账号、不给任何写权限,并把来源限制在部署机网段——因为采集端一旦连错实例,误配置的影响面会被放大。
基本信息
| SELECT | 快照阶段读取数据 |
|---|---|
| REPLICATION SLAVE / CLIENT | 读取 binlog 与复制状态 |
| RELOAD | 部分工具做 FTWRL 一致性快照时需要 |
| SHOW DATABASES | 列出可访问的库 |
| 安全要求 | 独立账号、不放写权限、定期轮换密码 |
| 来源限制 | 账号 Host 收敛到采集服务所在网段 |
授权示例
授权示例
CREATE USER 'cdc_ro'@'10.0.0.%' IDENTIFIED BY '***';
GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT
ON *.* TO 'cdc_ro'@'10.0.0.%';
-- 需锁表快照的工具再评估追加:RELOAD
-- 核对账号现有权限
SHOW GRANTS FOR 'cdc_ro'@'10.0.0.%';典型使用场景
- 新接一条同步链路:按工具版本的权限清单逐项核对
- 权限排障:采集启动即失败时先看是不是缺复制相关权限
- 安全加固:把历史共用账号拆分成采集专用只读账号
- 审计要求:定期检查采集账号权限是否被无意放大
- 多云与自建混合环境:不同实例的账号命名与来源网段保持一致的规范
权限与阶段对照
| 权限 | 何时需要 | 缺失表现 |
|---|---|---|
| SELECT | 首次快照与全量阶段 | 读取表数据报权限错误 |
| REPLICATION SLAVE | 拉取 binlog 增量 | 启动阶段即失败 |
| REPLICATION CLIENT | 读取复制相关状态 | 部分工具无法获取位点 |
| RELOAD | 需要全局锁做一致性快照 | 快照初始化报错 |
| SHOW DATABASES | 枚举库与表清单 | 元数据发现不完整 |
不要把业务高权限账号直接给 CDC 工具:一旦工具配置误连生产,影响面不可控。
权限检查的频率应高于密码检查:密码泄露是外部风险,权限被顺手放大往往来自内部协作,同样能造成大范围影响。
不同数据库的权限名称不一样:MySQL 看复制相关权限,PostgreSQL 看复制角色与表的读权限,接入前按目标库的官方要求逐项核对,不要照搬另一套环境的清单。