CDC 与同步53 条

CDC 账号权限清单

日志型 CDC 需要专门的只读账号:读数据要 SELECT,拉取 binlog 要 REPLICATION SLAVE 与 REPLICATION CLIENT,做一致性快照的部分工具还需要 RELOAD 与 SHOW DATABASES。按需授权、不授予写权限,并把账号来源收敛到部署机网段。

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 看复制角色与表的读权限,接入前按目标库的官方要求逐项核对,不要照搬另一套环境的清单。

易错点

  • 账号只给了 SELECT,快照阶段锁表报权限错误耽误排查时间
  • 把 % 全网段开放给 CDC 账号,凭据泄漏风险放大
  • 复用已有业务账号做采集,出问题时难以判断操作来自哪条链路
  • 只授权不验证:建完账号没有实际跑一遍连接与读取
  • 密码长期不轮换,且多处配置文件里留有明文副本

数据来源与参考

  • Debezium 官方文档(MySQL 连接器权限要求)
  • MySQL 8.0 Reference Manual: GRANT Statement
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌