这是学习笔记的第 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. Go语言简单的TCP编程
  2. Cause: org.postgresql.util.PSQLException: ERROR: column province_id does not exist
  3. MySql 中 case when then else end 的用法
  4. crystal ball 软件_推荐10个堪称神器的软件工具
  5. (省赛系列——团队第三场)
  6. 各种版本操作系统的虚拟机镜像文件
  7. CPU指令集科普:CISC指令集和RISC指令集
  8. 微软商店无法下载应用,VS2019无法下载插件问题解决方案
  9. 如何刷访问量 的详细介绍
  10. Java 合并Word文档
  11. 五大地形等高线特征_等高线地形图的判读技巧
  12. 【大数据】城市公交网络分析与可视化(四):绘制城市公交(地铁)线路图
  13. idea工具首次提交代码到git上
  14. 论文阅读-Whisper语音识别(OpenAI)
  15. 【Gitlab】 remote: Ask a project Owner or Maintainer to create a default branch:
  16. 谷歌浏览器 Chrome 安装 Tampermonkey 油猴插件的方法
  17. 一般迭代法(一)| 原理公式 + 迭代法的收敛性
  18. IDM一直弹出下载框怎么办?
  19. Java 16 藏刀而来,Java 8 面不改色 | 它强任它强,我用 Java 8,嘿嘿
  20. 德语的人称代词、物主代词变格宝典

热门文章

  1. 2019.03.01 bzoj2555: SubString(sam+lct)
  2. java Date 和 数据库Date,DateTimed
  3. SSL For Free 申请免费https SSL 凭证
  4. 代码管理和版本管理的作业流程以及规范是怎样的?
  5. 中国互联网+果汁行业商业模式创新与投资机会深度研究报告
  6. 2022-2028年中国新能源专用车行业市场前瞻与投资战略规划分析报告
  7. python自动开发之(算法)第二十七天
  8. hdu5296 01字典树
  9. C02-程序设计基础提高班(C++)第9周上机任务-类和对象
  10. NGOSS的一点简单概念