REPLICATION CLIENT权限用于查看复制状态,允许执行SHOW MASTER STATUS、SHOW SLAVE STATUS、SHOW BINARY LOGS等命令,支持GTID模式启动及监控工具采集指标,是复制运维诊断的必备只读权限。

REPLICATION CLIENT权限到底用来干啥
它不参与数据同步本身,只负责“看”——让账号能执行 SHOW MASTER STATUS、SHOW SLAVE STATUS、SHOW BINARY LOGS 这类命令。主从链路排查时查位点、看 GTID、确认 IO/SQL 线程状态,全靠它。没有这个权限,CHANGE MASTER TO 可能成功,但后续监控和诊断基本瘫痪。
什么时候必须加REPLICATION CLIENT
两类场景绕不开它:
- 用 GTID 模式复制:从库启动前需读取
SELECT @@global.gtid_executed,没这个权限直接报错ERROR 1227 (42000): Access denied - 运维脚本或监控工具(如 Prometheus + mysqld_exporter)要采集复制指标:它们内部就是调
SHOW SLAVE STATUS,权限缺失导致指标为空或报错
注意:纯传统 binlog file+position 模式下,REPLICATION CLIENT 不是硬性要求,但建议默认加上——省得换模式时踩坑。
授予权限时最容易漏的三个点
很多人只写 GRANT REPLICATION SLAVE,却忘了配套动作:
-
REPLICATION CLIENT必须和REPLICATION SLAVE授给同一个 host,比如从库 IP 是192.168.1.11,就得写'repl'@'192.168.1.11',不能一个用%一个用具体 IP - MySQL 8.0+ 默认认证插件是
caching_sha2_password,而部分旧监控工具或脚本只认mysql_native_password;建号时没显式指定插件,连都连不上,更别说查状态了 - 授完权限必须执行
FLUSH PRIVILEGES,否则权限不生效——这不是可选项,是必做步骤
一条安全又够用的授权语句怎么写
以从库真实 IP 192.168.1.11 为例,推荐这样一次性搞定:
CREATE USER 'repl'@'192.168.1.11' IDENTIFIED WITH mysql_native_password BY 'StrongPass123!'; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'192.168.1.11'; FLUSH PRIVILEGES;
别图省事用 %,也别把 ALL PRIVILEGES 或 SUPER 塞进去——这个账号只服务复制链路,多一丁点权限都是攻击面。


















