背景
使用canal监听数据库--->创建canal微服务--->接收canal监听到的消息--->将消息打印控制台
问题描述
修改数据库后,控制台没有任何消息。
原因分析:
可能原因:
- canal微服务连接不上canal
- canal连接不上mysql
重新创建一个用户,模拟原来的操作场景
create user test@'%' IDENTIFIED by 'test';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'test'@'%';
FLUSH PRIVILEGES;
本机navicat连接mysql报错
内容大概是:客户端不支持服务器请求的身份验证协议;考虑升级 MySQL 客户端
Client does not support authentication protocol requested by server; consider upgrading MySQL client
修改加密规则
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '123456';
mysql> flush privileges;
本机navicat连接成功
解决方案:
1:
启动canal。启动微服务。
微服务启动正常,关闭canal后,微服务报错。
说明微服务能够正常连接canal。
2:
查看canal的日志信息
进入canal容器-进入日志目录
docker exec -it canal /bin/bash
cd canal-server/logs/example
查看相关日志信息
cat example.log
发现异常如下
Access denied for user拒绝登录
授权用户
ALTER USER 'canal'@'localhost' IDENTIFIED WITH mysql_native_password BY 'canal';
#修改加密规则
FLUSH PRIVILEGES; #刷新权限
再次查询用户信息
mysql> select user,host,plugin from mysql.user;