复制账号是什么
从库要读取主库的二进制日志,必须用一个具备复制相关权限的账号。最小权限组合是复制从库权限:只被允许拉取日志,不能读写业务数据。账号来源网段要限制,密码独立并定期轮换,避免一处泄露影响面扩大。
基本信息
| 必需权限 | REPLICATION SLAVE,用于拉取二进制日志 |
|---|---|
| 建议权限 | REPLICATION CLIENT,用于查询复制状态与位点 |
| 作用范围 | 全局权限,因此来源主机限制是主要防线 |
| 密码插件 | 默认认证插件要求安全连接或密钥交换,老客户端可能不兼容 |
| 变更生效 | 授权语句执行后立即生效,不需要重载 |
典型使用场景
- 新建从库:先建复制账号,再配置复制起点并启动复制线程
- 主从重建:从库漂移严重时用同一账号重新挂载
- 多级复制:中间层也需要拉取日志的账号,来源要限制到上级实例
- 监控采集:用只读复制状态权限的账号采集复制指标
- 权限收敛:回收历史上过度授权的复制账号,改为最小权限
创建复制账号
创建复制账号
-- 只允许特定网段连接,最小权限
CREATE USER 'repl'@'10.0.%' IDENTIFIED BY 'Str0ng#Repl!';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'10.0.%';
-- 核对授权结果
SHOW GRANTS FOR 'repl'@'10.0.%';
-- 从库侧使用该账号挂载复制
CHANGE REPLICATION SOURCE TO SOURCE_HOST='10.0.0.10', SOURCE_USER='repl',
SOURCE_PASSWORD='***', SOURCE_AUTO_POSITION=1;
START REPLICA;
SHOW REPLICA STATUS\G权限对照
| 权限 | 用途 | 是否必需 |
|---|---|---|
| REPLICATION SLAVE | 拉取主库二进制日志 | 必需 |
| REPLICATION CLIENT | 查询主库复制状态与位点 | 建议授予 |
| SELECT | 读取业务数据 | 不需要,授予即过度授权 |
| 全局管理权限 | 管理参数与账号 | 绝不应授予 |
账号的主机名写具体网段而不是全通配:复制链路通常在同内网,限制来源能显著降低凭据被滥用的风险。
复制账号一旦泄露,攻击者可直接拉取全量变更日志,等价于拿到数据变更的全部内容,因此要按生产凭据管理。
创建后的核对项
- 核对授权结果:确认只有复制相关权限,没有附带查询或管理权限
- 核对来源网段:与实例实际所在网段一致,过宽要收敛
- 登记台账:记录账号用途、归属人与轮换周期
- 验证连通:用该账号在从库侧发起一次复制连接测试