首先,给大家介绍一下TDSQL。TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。(TDSQL(mysql版)产品详细信息https://cloud.tencent.com/product/dcdb/details)

相信有部分公司已经在使用或者试用过这款数据库产品了,那么在部署和使用中都或多或少的遇到一些问题,下面我先给各位介绍一下我遇到的这个问题。

一、问题:

众所周知,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过程中修改实例密码一定要牢记!!!一定要牢记!!

经过一番操作后,赤兔管理平台与监控库实例终于可以正常访问和使用了,希望上述的过程能够帮到各位。祝在读此文章的大牛们工作顺利,事事顺心。

文章来源:云贝学院

腾讯云TDSQL监控库密码忘记问题解决实战的更多相关文章

  1. 腾讯云TDSQL审计原理揭秘

    版权声明:本文由孙勇福原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/244 来源:腾云阁 https://www.qclo ...

  2. 使用腾讯云“自定义监控”监控GPU使用率

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:李想 随着人工智能以及比特币的火热,GPU云服务的使用场景是越来越广,在很多场景下我们也需要获取GPU服务器的性能参数来优化程序的执行.目 ...

  3. 286万QPS!腾讯云TDSQL打造数据库领域的“超音速战机”

    Bloodhound SSC超音速汽车将陆地极限速度提升到1678公里/小时,号称陆地“超音速战斗机”.无独有偶,同样也在2017年,在英特尔®.腾讯金融云团队的共同见证下,腾讯云数据库TDSQL采用 ...

  4. 强强联袂!腾讯云TDSQL与国双战略签约,锚定国产数据库巨大市场

    日前,腾讯云计算(北京)有限责任公司与北京国双科技有限公司签署了<国产数据库产品战略合作协议>,双方将在数据库技术方面展开深度合作,通过分布式交易型数据库的联合研发.产品服务体系建设.品牌 ...

  5. 借助腾讯云CDN开启全站https及问题解决分享

    版权声明:本文由张戈原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/78 来源:腾云阁 https://www.qcloud ...

  6. 腾讯云TDSQL PostgreSQL版 -最佳实践 |优化 SQL 语句

    查看是否为分布键查询 postgres=# explain select * from tbase_1 where f1=1; QUERY PLAN ------------------------- ...

  7. 腾讯云TDSQL MySQL版 - 开发指南 二级分区

    TDSQL MySQL版 目前支持 Range 和 List 两种格式的二级分区,具体建表语法和 MySQL 分区语法类似. 二级分区语法 一级 Hash,二级 List 分区示例如下: MySQL ...

  8. 腾讯云TDSQL MySQL版 - 开发指南 分布式事务

    由于事务操作的数据通常跨多个物理节点,在分布式数据库中,类似方案即称为分布式事务. TDSQL MySQL版 支持普通分布式事务协议和 XA 分布式事务协议.TDSQL MySQL版(内核5.7或以上 ...

  9. 关于linux密码忘记问题解决方法

    最近在试装centos,不小心把密码丢了,进不去,查了一下资料,找到了方法,试验成功.存在这里,备用. 1. 在出现grub画面时,用上下键选中你平时启动linux的那一项,然后按e键 2. 再次用上 ...

随机推荐

  1. DL基础补全计划(一)---线性回归及示例(Pytorch,平方损失)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  2. 探索颜色渐变绘制算法(基于Processing语言) 第一部分

    突然间意识到连续变化的颜色在程序中是如何实现的这一问题.没错,就想有事找事,我会分好几部分慢慢探寻,其实笔者也不会,咱一起研究.ok,我们开始! 第一部分 初始部分就从官方案例来入手学习.官方给了三个 ...

  3. MySQL数据库复制技术应用实战(阶段二)

    MySQL数据库复制技术应用实战(阶段二)文档 作者 刘畅 时间 2020-9-27 服务器版本:CentOS Linux release 7.5.1804 主机名 ip地址 服务器配置 安装软件 密 ...

  4. 面试题五:Spring

    Spring IoC 什么是IoC? 容器创建Bean对象,将他们装配在一起,配置并且管理它们的完整生命周期. Spring容器使用依赖注入来管理组成应用程序的Bean对象: 容器通过提供的配置元数据 ...

  5. JS秒表倒计时器 (转)

    <html> <body> <span>倒计时30分钟:</span><span id="clock">00:30:00 ...

  6. 详解Docker 端口映射与容器互联

    详解Docker 端口映射与容器互联 1.端口映射实现访问容器 1.从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的. 当容器中运行 ...

  7. Leetcode No.27 Remove Element(c++实现)

    1. 题目 1.1 英文题目 Given an integer array nums and an integer val, remove all occurrences of val in nums ...

  8. Django基础-002 Models的属性与字段

    1.models字段类型 AutoField():一个IntegerField,根据可用ID自动递增.如果没指定主键,就创建它自动设置为主键. IntegerField():一个整数: FloatFi ...

  9. C语言:#error命令,阻止程序编译

    #error 指令用于在编译期间产生错误信息,并阻止程序的编译,其形式如下: #error error_message 例如,我们的程序针对 Linux 编写,不保证兼容 Windows,那么可以这样 ...

  10. C语言变量类型

    #include <stdio.h> // C 语言中,任何数据类型都不可以直接存储一个字符串.那么字符串如何存储? //在 C 语言中,字符串有两种存储方式,一种是通过字符数组存储,另一 ...