MySQL创建MHA监控账号需执行CREATE USER 'mha_monitor'@'%' IDENTIFIED BY 'your_strong_password',再授予SELECT、RELOAD、SUPER、REPLICATION CLIENT ON .权限,并FLUSH PRIVILEGES;必须避免复用repl账号或root,且需确保认证插件兼容、网络可达、bind_address配置正确。

mysql如何创建MHA监控账号并授权
MHA Manager需要一个专用数据库账号来检测主从状态、读取复制信息、触发切换前检查。这个账号不能只给SELECT,否则masterha_check_repl会报错“Access denied for operation REPLICATION CLIENT”。必须显式授予特定权限,且不能依赖ALL PRIVILEGES——它在某些MySQL版本(如8.0+)中不包含REPLICATION CLIENT。
-
REPLICATION CLIENT:必需,用于执行SHOW MASTER STATUS和SHOW SLAVE STATUS -
SELECT:必需,用于查询information_schema和复制相关表(如performance_schema.replication_connection_status) -
RELOAD:必需,用于执行FLUSH LOGS等维护操作(MHA故障切换时可能调用) -
SUPER:必需,用于在提升新主库时执行RESET SLAVE ALL和CHANGE MASTER TO等高权限命令
推荐在主库上执行以下语句(注意替换'mha_monitor'和密码):
CREATE USER 'mha_monitor'@'%' IDENTIFIED BY 'your_strong_password'; GRANT SELECT, RELOAD, SUPER, REPLICATION CLIENT ON *.* TO 'mha_monitor'@'%'; FLUSH PRIVILEGES;
为什么不能用root或复制账号复用
直接复用repl账号不行:repl通常只有REPLICATION SLAVE权限,缺少REPLICATION CLIENT和SUPER;用root则违反最小权限原则,且MHA日志里频繁出现Access denied警告(尤其在8.0+开启require_row_format或sql_log_bin=OFF上下文时)。
解析 MySQL 8.0 的 DDL 脚本,并将表结构导出为 Excel 格式。适用于用户需将 MySQL 的 `CREATE TABLE` 语句转换为结构化的 Excel 文件场景,导出内容包含字段名、数据类型、长度及精度等信息。支持多张表的批量处理,每张表对应 Excel 中的一个独立工作表。适用于数据库文档编写、数据字典生成及模式分析等任务。
- MySQL 8.0+默认启用
caching_sha2_password认证插件,需确认mha_monitor账号使用mysql_native_password(否则MHA Perl脚本连接失败) - 如果集群启用了
require_secure_transport=ON,该账号必须走SSL连接,否则masterha_check_ssh通过但masterha_check_repl仍会因连接拒绝而失败 - 账号host部分建议用
'%'而非具体IP,因为MHA Manager可能从任意节点发起探测(尤其当Manager部署在Slave上时)
验证权限是否生效
不要只靠SHOW GRANTS看输出,要实际模拟MHA行为:
- 在Manager节点用
mysql -umha_monitor -pyour_strong_password -h192.168.1.10 -e "SHOW MASTER STATUS;"测试主库连通性 - 在任一从库上执行
mysql -umha_monitor -pyour_strong_password -h192.168.1.11 -e "SHOW SLAVE STATUS\G",确认能返回Seconds_Behind_Master等字段 - 运行
masterha_check_repl --conf=/etc/mha/app.cnf,观察输出中是否仍有Can't connect to MySQL server或Access denied字样
最容易被忽略的是:即使所有权限都给了,如果MySQL配置了bind_address = 127.0.0.1,外部节点根本连不上——必须设为0.0.0.0或对应网卡IP,且防火墙放行3306端口。

















