问题描述
Canal-deployer 报错 'show master status' has an error! -图1 在datagrip(或者navicat)可以正常执行该命令 show master status -图2 mysql用户权限没有问题 -图3
排查过程
网友给的可能原因如下: binlog没开启,或者binlog格式不是row 用户名不对(确保和canal.instance.dbUsername配置的一样),或者授权不正确(你这个授权看上去没啥问题)
然后我就顺着这个思路往下排查
binlog是否正常?
- 检查my.cnf配置是否已开启,并且格式为row(结果显示没有问题)
权限有没有问题?
反复检查都没发现问题所在,过了两天后才想起换成root用户试试看。结果就成功了。
难道说相同的用户,不同的连接会话权限不同?结果还真就这样
使用命令行非root用户连接,执行 show master status 命令显示权限不足,如下图所示:
解决方案
canal改用root用户连接
总结
对mysql 用户角色权限管理不熟悉,对常用命令不熟悉,对binlog相关知识不熟悉;导致问题排查起来异常困难。以后还得多多学习才是。