首先,给大家介绍一下 TDSQL。TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强统一高可用、寰球部署架构、分布式程度扩大、高性能、企业级平安等个性,同时提供智能 DBA、自动化经营、监控告警等配套设施,为客户提供残缺的分布式数据库解决方案。(TDSQL(mysql 版)产品详细信息 https://cloud.tencent.com/pro…)
置信有局部公司曾经在应用或者试用过这款数据库产品了,那么在部署和应用中都或多或少的遇到一些问题,上面我先给各位介绍一下我遇到的这个问题。
一、问题:
家喻户晓,TDSQL 集群会在一开始初始化时产出一个监控库实例,失常状况下咱们是不倡议用户去操作或者单独操作监控库这个实例的。但如果因为误操作与不小心批改了监控库的明码,并且又没有记住,上面这段应该能帮到你。
二、故障复现:
以下操作为我在本人的测试环境进行的问题复现。
1、批改监控库明码:
2、进入监控库实例,查看实例的拜访账户信息:
3、对如上 tdsqlpcloud 账号进行批改明码操作:
4、在确认批改明码之后,窗口立马会呈现 php 谬误提示信息:
随后咱们刷新赤兔页面,将会发现赤兔曾经没有方法失常拜访了。
三、排查过程与问题解决:
1、接下来就是咱们的排查思路,首先咱们先看报错,最下面提醒咱们 username or password error 就曾经暴露出问题,证实这个问题是咱们批改明码导致的。而上面的 Backtrace 裸露给咱们的则是赤兔页面上的组件监控获取的形式,同样是去监控库外面取所须要的数据。
2、在部署的过程中咱们已知有这么几个中央会寄存监控库的账户名明码,第一是在装置部署包的 group_vars/all 内,但这个只是初期录入的监控库信息,批改并不会起作用。前面咱们就想第二个会寄存的中央,那就是赤兔的 php 配置文件
可见这里的明码还不是咱们批改后的明码,咱们接着找。
3、在初始化赤兔的时候如果有留神的话会发现除了创立了监控库还会创立一个配置库,默认库名为 tdsqlpcloud,配置库中个别一会存储用户名和明码,尽管以后没有方法通过 proxy 登陆数据库,但还是可能通过 root 权限登陆数据库的,所以咱们看一下配置库中的表信息。
可见这里的明码依然不是咱们批改后的明码,咱们接着找。
其中 authentication_string 字段被 password()函数进行了加密。
这个应该就是咱们最初要找的明码,然而进行了加密,解密太过麻烦,所以咱们尝试换一种思路,不去纠结当初的明码是什么,抉择用一串已知的字符,应用此加密算法进行加密,之后替换 user:tdsqlpcloud 的 authentication_string 字段暴力改掉明码。通过试验,此办法仍旧行不通,应该是批改明码操作改变的中央不只是这几个。
4、从底层间接批改的明码看来是不可行的,所以咱们就想能不能够仿照管控从新下发批改明码操作,这样就能从新让管控走一遍明码批改的流程,接下来咱们再试验一下。
5、登录任意一台机器的后盾,只有能和 OSS 服务通信,执行如下命令:
curl -H “Accept: application/json” -H “Content-type: application/json” -X POST -d ‘{“callee”:”TDSQL”,”caller”:”DES”,”eventId”:101,”interface”:{“interfaceName”:”TDSQL.ResetPwd”,”para”:{“groupid”:””,”host”:”%”,”id”:”set_id”,”pwd”:”userpassword”,”user”:”username”}},”password”:”DES”,”timestamp”:1435749309,”version”:”1.0″}’ 10.0.0.5:8080/tdsql
6、查看执行后果见到有 ”err_msg”:”resetpwd ok”,”returnMsg”:”ok”,则持续下一步。
尝试刷新赤兔页面,如果拜访不失常则是因为之前咱们批改过赤兔的配置文件和配置库中的明码。所以咱们要把密码恢复到统一。都批改统一后,咱们从新尝试刷新赤兔页面,页面已恢复正常。
由此事可知,在应用 tdsql 过程中批改实例明码肯定要牢记!!!肯定要牢记!!
通过一番操作后,赤兔治理平台与监控库实例终于能够失常拜访和应用了,心愿上述的过程可能帮到各位。祝在读此文章的大牛们工作顺利,事事顺心。
文章起源:云贝学院