ITPub博客

首页 > Linux操作系统 > Linux操作系统 > MYSQL数据库误赋权引发的血案

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

原创 Linux操作系统 作者:张冲andy 时间:2023-04-06 21:29:50 0 删除 编辑

赋权操作是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)

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31383567/viewspace-2944242/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
支持就关注我个人公众号:DBA烂笔头 。专注数据库领域,熟悉oracle、mysql、redis、mongodb,clickhouse等相关技术

注册时间:2016-08-11

  • 博文量
    626
  • 访问量
    286334