MaxScale搭配MariaDB自动故障切换时报Access denied错误如何解决?
问题根因
MariaDB 10.3 版本中,SET STATEMENT max_statement_time = N FOR <执行语句> 语法需要账号持有单独的 STATEMENT TIMEOUT 权限,该权限不属于 SUPER 权限的覆盖范围,你当前为monitor_user授予的权限中缺失该项,因此触发1045访问拒绝报错。
解决方案
方案1:补全权限(推荐)
登录所有MariaDB节点(主库、从库),使用高权限账号执行以下授权语句:
GRANT STATEMENT TIMEOUT ON *.* TO 'monitor_user'@'192.168.100.%'; FLUSH PRIVILEGES;
授权完成后可执行以下命令验证权限是否生效:
SHOW GRANTS FOR 'monitor_user'@'192.168.100.%';
确认返回结果包含STATEMENT TIMEOUT权限后,重启MaxScale服务,再测试故障切换即可正常执行。
方案2:关闭MaxScale操作超时限制
如果不想新增数据库权限,可修改MaxScale配置文件中[mariadbmon]模块的配置,添加以下参数关闭超时设置:
failover_timeout=0
修改完成后重启MaxScale服务即可,该配置会让MaxScale执行STOP SLAVE等操作时不再包裹SET STATEMENT max_statement_time语句,不会触发权限报错。
内容的提问来源于stack exchange,提问作者lc63
相关产品推荐
相关产品推荐

