tidb dm密码中不能带有下划线

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】7.5.0
【复现路径】
1.使用DM同步mysql8.0数据,报错

2.后面升级到7.6.0版本,报一样的错误

3.最开始一致以为TIDB和 MYSQL8.0.34的兼容,试了各种方法。

4.后面尝试了各种办法,发现密码中带有下划线的时候,增量同步会失败,全量同步会成功。
账号为:tidb 密码:89DIKCnbv_kdOCKlck678

dm脚本如下
name: “youpin_merge”
task-mode: all # 进行全量数据迁移 + 增量数据迁移
meta-schema: “task_youpin_merge”
clean-dump-file: true # 是否清理 dump 阶段产生的文件,包括 metadata 文件、建库建表 SQL 文件以及数据导入 SQL 文件
ignore-checking-items: [“auto_increment_ID”,“table_schema”]

【遇到的问题:问题现象及影响】
由于GIT连接不了,提一个BUG给官方或者大家使用的时候注意。目前已知7.5.0和7.6.0有这个问题
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

不让用就换个别的字符。

1 个赞

密码中有特殊字符,可以使用这个绕过https://docs.pingcap.com/zh/tidb/stable/dm-manage-source#加密数据库密码

2 个赞

encrypt加密下啊。。。

1 个赞

一举多得 :+1:

让密码裸奔在配置文件里面不好吧。
强烈建议加密处理一下,不管是tidb还是mysql的密码都是加密后在放在配置文件里面会比较好。

建议使用加密后的密码,dm提供了加密数据库密码的方法:

在 DM 相关配置文件中,推荐使用经 dmctl 加密后的密码。对于同一个原始密码,每次加密后密码不同。

./dmctl -encrypt 'abc!@#123'
MKxn0Qo3m3XOyjCnhEMtsUCm83EhGQDZ/T4=
3 个赞

有密码的文件建议要加密哦

:+1: :+1: :+1:

我特意去翻了下yaml文件的规范,即便是几个月前的最新规范里面,下划线也在转移字符这个章节里面。

https://yaml.org/spec/1.2.2/#57-escaped-characters

Escaped Unicode non-breaking space (xA0) character.

[56] ns-esc-non-breaking-space ::= ‘_’

根据yaml +下划线也能搜到一堆类似的问题,从java到go都有。
所以非转义情况下的下划线解析问题,可能并不是一个bug。
而是规范就是这么要求的。

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。