这是学习笔记的第 2103 篇文章

最近碰到了一个奇怪的权限问题,问题的背景是业务同学反馈在下班后,有一个数据表出现了阻塞,导致后续的业务流程都产生了拥堵,在对这个问题进行分析发现,业务同学所谓的拥堵,阻塞是数据库连接出了问题。当然我们进行了一些深入的沟通,对整个问题的情况有了一个更为清晰的了解。

6:30左右,业务同学发现程序端产生了阻塞,程序端正在处理的操作是一个create table的操作。

6:40左右,业务同学尝试通过客户端工具连接到数据库来手工执行,但是发现连接超时,根据业务同学反馈,之前是能够正常连接的。

6:50左右,业务同学开始呼叫DBA进行处理。

7:00左右,DBA就位后,什么都没做,就魔法般的解决了问题。

对于业务同学的印象,是数据库不够稳定,因为另外一套环境也出现了类似的问题,这是一个很纠结的情况,我们如同哆啦A梦般的存在,但是实际上什么都没有做就解决了问题。

当然在我的职业生涯中,对待问题我是不相信神奇的力量,事出有因,我希望找到那些看起来简单的问题的答案。

从业务同学的反馈时间点开始,我尝试找到一些相关的日志来看看,从数据库的处理来看,是不大可能阻塞DDL中的create操作的,无论服务器压力大小,这算是DDL里面最正常的需求了,绝对不应该阻塞几十分钟。

幸运的是,我很快找到了相关的binlog日志,简单解析之后,看到了下面的内容。

从内容来看,情况和业务同学反馈的时间点是吻合的,业务逻辑会自动创建相关的时间表,而下一次create则是在20多分钟之后,这里的问题就来了,为什么创建两张表的过程中会有这些权限处理的语句出现?

看这些权限处理的语句还是比较规范的,而且从执行日志来看不大像是人工执行的,因为整个权限的处理涉及的语句条数还比较多,从执行上来看,像是工具生成的。

我查看了下相关时间范围内的工单数据,发现在那个指定的时间段里,确实有同事在处理几个相关的工单,带着这个信息和同事确认,才发现这两件看起来不相关的事情还是有关联的。

业务同学反馈,有两套环境都出现了类似的问题,和工单数据比对发现,情况是完全相符的,在出现问题的时间段里产生了阻塞。

我们来仔细看一下这条语句:

GRANT USAGE ON *.* TO 'srv_datasync_rwh'@'192.168.18.%' IDENTIFIED WITH 'mysql_native_password' AS '*5EEBC522DE487B0D5C2506C65412F9C337F70C40'

这条语句是对于192.168.18端的客户端开通相应的权限,而这个grant语句其实是类似MySQL 5.7的create user语句,带着这个问题继续下钻,发现原来这个数据库中本身是存在用户'srv_datasync_rwh'@'192.168.18.%' 的,在这里,相当于工具重新生成了完整的授权语句,对已经存在的用户进行了重新授权,这个操作的代价有点类似于权限重置。

而这个问题在测试环境中模拟是直接复现不了的,整个问题和触发的上下文环境也有相关性,同时对涉及到权限处理的完整过程中产生了额外影响,有点类似于在购物网站中,一边在购物下单,另一边在同时做密码重置,这是一种较为模糊的临界状态。

总体来说,这个权限问题还是相对可控的,我们需要修复运维工具自动生成的语句的逻辑,对于5.7版本的使用create user,grant这种组合授权模式。

相关链接:

个人新书 《MySQL DBA工作笔记》

runtime 日志权限不够_MySQL权限处理的一个小bug相关推荐

  1. mysql权限配置文件_MySQL权限管理、配置文件(三)

    一.MySQL权限管理 GRANT 权限 ON 授权范围 TO '用户名'@'允许的ip(所有%)' IDENTIFIED BY '用户密码'; 权限:参加下表,一般常用的是CREATE.DELETE ...

  2. mysql撤销权限设置_MySQL 权限撤销

    MySQL 权限撤销 简介:在本教程中,您将学习如何使用MySQL REVOKE语句来撤销MySQL帐户的权限. 我们强烈建议您按照下面的教程更好地了解MySQL REVOKE的工作原理: MySQL ...

  3. 13.简述MYSQL的权限级别_MySQL权限级别

    MySQL权限级别 MySQL 中的权限分为五个级别,分别如下: 1.Global Level: Global Level 的权限控制又称为全局权限控制,所有权限信息都保存在mysql.user 表中 ...

  4. 用一个小案例来解释linux中文件或目录的权限

    Linux中文档和目录的权限 众所周知 , Linux中文档的权限包括所有者权限(User).同组权限(Group)和其他权限(Other).使用rwx来作为表示,分别为read.write和exec ...

  5. 权限执行[Android开发常见问题-4] RunTime.exec()如何以root权限执行多条指令?

    每日一贴,今天的内容关键字为权限执行 RunTime.exec()这个接口可以说是给我们开发者供给了一个很好的直观操纵底层操纵系统的机遇,但是这个接口的使用还有很多需要注意的问题.由于要完全的分析这个 ...

  6. mysql目录权限设置_MySQL文件及目录权限设置分析-爱可生

    1 背景 创建文件及目录时,我们会对相关的权限有一定的要求,默认的可以通过系统的umask来控制.然而,在我们使用MySQL时,无论是开始使用前的初始化,还是MySQL实例启动后,创建的相关文件及目录 ...

  7. mysql 开发权限_mysql权限管理

    权限介绍 mysql中的数据是非常重要的,在生产环境中不同项目的开发.运维都会接触到mysql,数据的安全就会尤为重要.如何能保证数据的安全呢,正确合理权限是我们最重要的保障.总体思路就是针对用户的使 ...

  8. mysql-front权限管理_mysql 用户及权限管理 小结

    MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命 ...

  9. 企业上云如何对SLS日志审计服务进行权限控制

    简介: 日志审计是信息安全审计功能的核心部分,是企业信息系统安全风险管控的重要组成部分.SLS的日志审计服务针对阿里云的多种云产品(Actiontrail.OSS.SLB.RDS.PolarDB.SA ...

最新文章

  1. kudu接受kafka消息_Kafka 在车好多
  2. 有没有一种简单的方法可以按值删除列表元素?
  3. pyrender 安装
  4. python难学不-python难学吗-没有编辑基础可以学python吗?
  5. 将你的Apache速度提高十倍的经验分享
  6. Java连接数据库(JDBC)之三:java访问数据库MySQL实例
  7. springboot实现上传文件
  8. jvm中的年轻代 老年代 持久代 gc ----------转载
  9. Opencv——查找并绘制凸包、凸包与轮廓的关系
  10. 飞秋 一个程序员的老作品。
  11. pythonsqlalchemy怎么看到返回的具体内容_sqlalchemy返回值总结
  12. 针对非业务的通用框架开发,如何做需求分析和设计?
  13. 给客户寄荔枝很好,开展新业务更重要
  14. 索尼手机更新android10,索尼XPERIA 10 II终于收到了ANDROID 11更新
  15. Qt编写自定义控件65-光晕日历
  16. 天猫order前后台
  17. word-wrap长单词与URL地址自动换行
  18. bandwagon支付宝支付教程
  19. TVU与纳加联合推出具备多网聚合功能的全能导播台
  20. idea出现Undo Set language level to 6 - @Override in interfaces?

热门文章

  1. Js touchg事件在移动端网页中左右滑动效果
  2. 安全测试之xss攻击和mysql注入
  3. Windows 10下编译安装Hadoop2.6
  4. 2022-2028年中国硅胶手套产业竞争现状及发展趋势分析报告
  5. Servlet开发入门
  6. ubuntu设置不同的eigen版本
  7. 批量新建文件夹并命名_dos命令实现批量新建文件夹
  8. 算法设计与分析第5章 回溯法(二)【回溯法应用】
  9. 我所理解的卡尔曼滤波——公式推导与应用
  10. 学习linux要会mysql吗_linux 学习 mysql安装到连接