赞
踩
出现”caching_sha2_password Auth faile“这个问题呢,主要是因为自MySQL 8.0.3开始,身份验证插件默认使用caching_sha2_password,所有我们得修改这个配置:
解决:修改canal用户对应的身份验证插件为mysql_native_password
- mysql> select host,user,plugin from mysql.user ;
- mysql> ALTER USER 'canal'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
- mysql> FLUSH PRIVILEGES;
注意:将”password“切换成自己canal设置的密码,例如我设置的是”canal“;
修改完成后,查看我们在docker下改canal和数据库连接的日志,发现连接成功啦!下面附上docker的操作命令,和查看日志的命令。
小提示:需要安装mysql8.0版本的小伙伴,可以查看我写的另一篇博客,查看安装mysql中遇到的相关问题:Mysql配置连接Navicat、DataGrip,Mysql8.0必备!!!_navicat和datagrip_Đến❦หัวใจ的博客-CSDN博客
创建网络
我们需要创建一个网络,可以将MySQL、Canal、MQ等放到同一个Docker网络中:
docker network create item
让mysql加入这个网络:
docker network connect item mysql
docker安装canal命令,详细解释如下:
- docker run -p 11111:11111 --name canal \
- -e canal.destinations=item \
- -e canal.instance.master.address=mysql:3306 \
- -e canal.instance.dbUsername=canal \
- -e canal.instance.connectionCharset=UTF-8 \
- -e canal.instance.tsdb.enable=true \
- -e canal.instance.gtidon=false \
- -e canal.instance.filter.regex=item\\..* \
- --network item \
- -d canal/canal-server:v1.1.5
说明:
-p 11111:11111
:这是canal的默认监听端口
-e canal.instance.master.address=mysql:3306
:数据库地址和端口,如果不知道mysql容器地址,可以通过docker inspect 容器id
来查看
-e canal.instance.dbUsername=canal
:数据库用户名
-e canal.instance.dbPassword=canal
:数据库密码
-e canal.instance.filter.regex=
:要监听的表名称,这个很关键
表名称监听支持的语法:
mysql 数据解析关注的表,Perl正则表达式. 多个正则之间以逗号(,)分隔,转义符需要双斜杠(\\) 常见例子: 1. 所有表:.* or .*\\..* 2. canal schema下所有表: canal\\..* 3. canal下的以canal打头的表:canal\\.canal.* 4. canal schema下的一张表:canal.test1 5. 多个规则组合使用然后以逗号隔开:canal\\..*,mysql.test1,mysql.test2
docker exec -it canal bash
查看日志 :查看canal是否正在运行,看倒数几行running
tail -f canal-server/logs/canal/canal.log
查看是否和mysql连接成功,这里很关键,主要查看是否mysql和canal连接成功:
tail -f canal-server/logs/item/item.log
连接成功则是下图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。