REPLICATION CLIENT权限用于执行SHOW MASTER STATUS、SHOW SLAVE STATUS、SHOW BINARY LOGS等只读命令,专责监控复制状态,不参与数据同步;该权限为全局权限,必须授予ON .,不可限定数据库。

REPLICATION CLIENT权限到底用来执行哪些命令
它只负责“看”主从状态,不参与数据同步本身。核心就是让账号能执行 SHOW MASTER STATUS、SHOW SLAVE STATUS、SHOW BINARY LOGS 这三类命令。监控工具(比如 mysqld_exporter、Percona Toolkit、masterha_check_repl)采集复制延迟、GTID 位置、IO/SQL 线程运行状态,全靠这几个命令返回的数据。没有这个权限,SHOW SLAVE STATUS 直接报 Access denied; you need (at least one of) the REPLICATION CLIENT privilege(s)。
授权时必须用 ON *.*,不能限定到具体库
REPLICATION CLIENT 是服务器级权限,作用域只能是全局(*.*),写成 ON mysql.* 或 ON test_db.* 都无效,MySQL 会静默忽略。常见错误是照搬其他权限写法,结果授了等于没授。
- 正确写法:
GRANT REPLICATION CLIENT ON *.* TO 'monitor'@'10.10.20.%'; - 错误写法:
GRANT REPLICATION CLIENT ON mysql.* TO 'monitor'@'%';(不报错但权限不生效) - 错误写法:
GRANT REPLICATION CLIENT ON test_db.* TO 'repl'@'%';(同样无效)
监控账号只需加这三项权限,别多也别少
生产环境监控账号(如给 mysqld_exporter 或 Zabbix 使用)严格按最小权限原则配: SELECT + PROCESS + REPLICATION CLIENT。少一个都会断指标:
-
SELECT:查information_schema和performance_schema里的统计表(比如processlist、table_io_waits_summary_by_table) -
PROCESS:执行SHOW PROCESSLIST查全部会话;不加就只能看到自己发起的连接,慢查询、锁等待都漏掉 -
REPLICATION CLIENT:读取SHOW SLAVE STATUS中的Seconds_Behind_Master、Exec_Master_Log_Pos等关键字段
别加 SHOW DATABASES ——它会让监控账号能列出所有库名,存在信息泄露风险;也别用 ALL PRIVILEGES,MySQL 8.0+ 中它默认不含 REPLICATION CLIENT,反而埋坑。
REPLICATION CLIENT 和 REPLICATION SLAVE 容易混淆的点
这两个权限完全不重叠,用途截然不同:
-
REPLICATION SLAVE是给从库连接主库用的,必须授予在主库上创建的同步账号(如'repl'@'%'),用于CHANGE MASTER TO后的 binlog 拉取。它本身不提供任何“查看”能力。 -
REPLICATION CLIENT是给监控、诊断、运维账号用的,可以单独授予,也可以和REPLICATION SLAVE一起给(比如 MHA 的mha_monitor账号)。但它绝不能替代REPLICATION SLAVE来做数据同步。
最常被忽略的是:有些团队只给同步账号 REPLICATION SLAVE,却忘了给监控账号单独配 REPLICATION CLIENT,结果 mysqld_exporter 启动报错,或者 masterha_check_repl 检查失败,排查半天才发现权限漏了。


















