Docker安装canal,出现caching_sha2_password Auth failed问题的解决,成功解决canal和mysql的连接问题

不念不忘少年蓝@ 2024-03-24 01:24 57阅读 0赞

1、caching_sha2_password Auth faile问题解决:

出现”caching_sha2_password Auth faile“这个问题呢,主要是因为自MySQL 8.0.3开始,身份验证插件默认使用caching_sha2_password,所有我们得修改这个配置:

a96db40b8231425f9a3708c681336f8d.png

解决:修改canal用户对应的身份验证插件为mysql_native_password

  1. mysql> select host,user,plugin from mysql.user ;
  2. mysql> ALTER USER 'canal'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
  3. mysql> FLUSH PRIVILEGES;

注意:将”password“切换成自己canal设置的密码,例如我设置的是”canal“;

91acd20b2bfe41d9abc07c7e3bc09f1f.png

修改完成后,查看我们在docker下改canal和数据库连接的日志,发现连接成功啦!下面附上docker的操作命令,和查看日志的命令。

fbef337569f74cd9b9f121c04c5547a9.png

小提示:需要安装mysql8.0版本的小伙伴,可以查看我写的另一篇博客,查看安装mysql中遇到的相关问题:Mysql配置连接Navicat、DataGrip,Mysql8.0必备!!!_navicat和datagrip_Đến❦หัวใจ的博客-CSDN博客

2、docker下安装canal

创建网络

我们需要创建一个网络,可以将MySQL、Canal、MQ等放到同一个Docker网络中:

  1. docker network create item

mysql加入这个网络:

  1. docker network connect item mysql

docker安装canal命令,详细解释如下:

  1. docker run -p 11111:11111 --name canal \
  2. -e canal.destinations=item \
  3. -e canal.instance.master.address=mysql:3306 \
  4. -e canal.instance.dbUsername=canal \
  5. -e canal.instance.connectionCharset=UTF-8 \
  6. -e canal.instance.tsdb.enable=true \
  7. -e canal.instance.gtidon=false \
  8. -e canal.instance.filter.regex=item\\..* \
  9. --network item \
  10. -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=要监听的表名称,这个很关键

表名称监听支持的语法:

  1. mysql 数据解析关注的表,Perl正则表达式.
  2. 多个正则之间以逗号(,)分隔,转义符需要双斜杠(\\)
  3. 常见例子:
  4. 1. 所有表:.* or .*\\..*
  5. 2. canal schema下所有表: canal\\..*
  6. 3. canal下的以canal打头的表:canal\\.canal.*
  7. 4. canal schema下的一张表:canal.test1
  8. 5. 多个规则组合使用然后以逗号隔开:canal\\..*,mysql.test1,mysql.test2

3、检查是否mysql和canal连接成功

  1. docker exec -it canal bash

查看日志 :查看canal是否正在运行,看倒数几行running

  1. tail -f canal-server/logs/canal/canal.log

查看是否和mysql连接成功,这里很关键,主要查看是否mysql和canal连接成功

  1. tail -f canal-server/logs/item/item.log

连接成功则是下图:

6d9662437d054789be90cd6cc73377fc.png

觉得有用给个路过的点赞吧~

发表评论

表情:
评论列表 (有 0 条评论,57人围观)

还没有评论,来说两句吧...

相关阅读