首页 > 数据库 >MYSQL数据库误赋权引发的血案

MYSQL数据库误赋权引发的血案

时间:2023-04-06 21:33:32浏览次数:37  
标签:赋权 pqc 血案 doa up user MYSQL 172.26

赋权操作是DB最常规操作,只增加一个赋权,这都有坑吗?

帮同事处理mysql赋权引发的故障案例,有代表性,避坑!!!

 

11:03 接到求助,系统完全打不开了。

信息获取。

Q1:哪个系统?

xxx系统。

Q2:什么报错?

Access denied by for user ‘pqc_doa_up’@’172.26.154.68’(using password:YES)

Q3:功能之前可以吗?

功能之前一直都可以

Q4:什么时候出现异常?

大概今天早上11:00

Q5:做了哪些变更或者操作?

没有做变更,…就早上给用户赋了一个权限

grant select on help_topic to 'pqc_doa_up'@'172.26.154.%';

 定位根本原因,删除异常用户,系统恢复正常!

 

排查过程回顾:

#查看报错用户

# 查看报错用户权限

# 把同名账号 pqc_doa_up@'172.26.154.%' 删除 (这里用户删除后,系统本应立即恢复正常,但怕权限遗漏,又把删除的用户权限全部重新赋权给保留用户,这导致又一次触发bug,GRANT SELECT ON `mysql`.`help_topic` TO 'pqc_doa_up'@'172.26.154.%' 

mysql> drop user pqc_doa_up@'172.26.154.%';Query OK, 0 rows affected (0.13 sec)

#怕权限可能遗漏,把提前备份的同名账号 pqc_doa_up@'172.26.154.%'备份的权限赋权给'pqc_doa_up'@'%'。(居然隐藏着一条 GRANT SELECT ON `mysql`.`help_topic` TO 'pqc_doa_up'@'172.26.154.%'

#至此,第一次通知检点,系统依旧无法访问,相同报错

# 再次查看pqc_doa_up用户的情况(奇怪之前明明删除了 pqc_doa_up@'172.26.154.%',这个用户怎么又出现了,思考片刻后,再次删除pqc_doa_up@'172.26.154.%')

mysql> drop user pqc_doa_up@'172.26.154.%';

Query OK, 0 rows affected (0.01 sec)

# 再次确认用户情况,确认删除成功,再次通知系统检点,反馈系统恢复正常

mysql> select User,Host,authentication_string,password from mysql.user where user='pqc_doa_up';

异常原因

 

 

原理扩展

总结 

   1、mysql版本8.x以下在用户新增授权时,需明确授权对象(user,host),不可出现对不存在的用户(user,host)授权,否则可能出现系统业务用户无法通过登录认证,引发异常。

   2、不同版本mysql对于赋权不存在在用户(user,host)处理机制不同

 

   5.6版本赋权执行成功,默认创建密码为空在用户(user,host)

   5.7版本赋权执行成功,默认创建密码为空在用户(user,host),抛出告警

   8.x版本授权执行失败,不会创建用户(user,host)

 

标签:赋权,pqc,血案,doa,up,user,MYSQL,172.26
From: https://www.cnblogs.com/andy6/p/17294285.html

相关文章

  • MySQL Others--优化autocommit会话参数设置请求
    问题描述在排查QPS较高的MySQL集群过程中发现,部分MySQL集群约50%的请求为"SETautocommit=1",每次业务请求前都会执行1次"SETautocommit=1"操作,虽然单次”SETautocommit=1“操作并不会消耗过多MySQL服务器资源,但高QPS场景下频繁执行"SETautocommit=1"操作,严重浪费应用服务器和M......
  • keepalived+MySQL实现高可用
    (一)keepalived概述Keepalived通过VRRP(虚拟路由冗余协议)协议实现虚拟IP的漂移。当master故障后,VIP会自动漂移到backup,这时通知下端主机刷新ARP表,如果业务是通过VIP连接到服务器的,则此时依然能够连接到正常运行的主机,RedHat给出的VRRP工作原理如下图: 本来对VIP漂移有一定了解的......
  • MySQL - 02
     数据库--查询数据库showdatabases;--创建数据库createdatabaseifnotexistsdbName;--切换数据库usedbName;--删除数据库dropdatabasedbName;dropdatabaseifexistsdbName;--查看当前使用的数据库selectdatabase(); 表&数据--创建表createta......
  • MySQL(十二)索引使用的情况分析
    索引使用的情况分析数据准备创建表student_info、courseCREATETABLE`student_info`(`id`intNOTNULLAUTO_INCREMENT,`student_id`intNOTNULL,`name`varchar(20)DEFAULTNULL,`course_id`intNOTNULL,`class_id`intDEFAULTNULL,`create_tim......
  • mysql 窗口函数(Window Functions)
    MySQL窗口函数(WindowFunctions)是一种高级的SQL查询技巧,它允许在结果集的一组相关行上执行计算。窗口函数可以用于处理分组、排序、累计等复杂的聚合任务,使得查询更加简洁和高效。在MySQL8.0及更高版本中,支持窗口函数。以下是一些常用的窗口函数:ROW_NUMBER():为结果集中的......
  • Linux下安装MySQL
    0准备工作yum换源:https://www.cnblogs.com/lgjb/p/17293111.html1下载yumRepositorywget-i-chttp://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm2安装yumRepositoryyum-yinstallmysql57-community-release-el7-10.noarch.rpm3安装mysql5.......
  • MySQL重复数据
    插入的数据中A,B,E存在重复数据,C没有重复记录123456789101112131415161718192021CREATETABLE`tab`(  `id`int(11)NOTNULLAUTO_INCREMENT,  `name`varchar(20)DEFAULTNULL,  PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREME......
  • 深入理解MySQL索引底层数据结构
    1引言在日常工作中,我们会遇见一些慢SQL,在分析这些慢SQL时,我们通常会看下SQL的执行计划,验证SQL执行过程中有没有走索引。通常我们会调整一些查询条件,增加必要的索引,SQL执行效率就会提升几个数量级。我们有没有思考过,为什么加了索引就会能提高SQL的查询效率,为什么有时候加了索引SQ......
  • Mac | HomeBrew 安装 & 配置 MySQL
    这个是我最新并且一直推崇的方法:1、安装:brewinstallmysql2、开启mysql:mysql.serverstart3、使用mysql的配置脚本:/usr/local/opt/mysql/bin/mysql_secure_installation//mysql提供的配置向导启动这个脚本后,即可根据如下命令提示进行初始化设置14:14:49withkoshkaaaain......
  • 面试突击MySQL:高并发情况下,数据库该如何设计?
    转载:http://blog.itpub.net/70000181/viewspace-2776766/面试题剖析为什么要分库分表?(设计高并发系统的时候,数据库层面该如何设计?)说白了,分库分表是两回事儿,大家可别搞混了,可能是光分库不分表,也可能是光分表不分库,都有可能。我先给大家抛出来一个场景:假如我们现在是一个小创业公......