关于mysql 修改权限表user字段host导致权限丢失的问题
来源:互联网 发布:淘宝助理下架宝贝 编辑:程序博客网 时间:2024/03/28 21:07
以前对mysql用户授权和回收都是使用grant 和revoke没出现过任何问题,昨天领导更改了办公网ip(蛋疼),所有办公网连接数据库都报错(恩,不要抱怨)。然后默默的开始写脚本批量更新上百台服务器的权限,更新脚本如下:
mysql -umysqldba -pxxx -e "update mysql.user set host='218.247.217.66' where host like '124.205.%';flush privileges;
跑完后,自觉得意,改完后确实能连接上但是无法访问库,查询发现所有对库的权限都没有了!人世间最痛苦的事莫过如此。
具体测试分析如下:
原始账号信息:
MariaDB [mysql]> show grants for sem3_prd@'218.247.217.66';
+-------------------------------------------------------------------------------------------------------------------------------+
| Grants for sem3_prd@218.247.217.66 |
+-------------------------------------------------------------------------------------------------------------------------------+
| GRANT SHOW DATABASES ON *.* TO 'sem3_prd'@'218.247.217.66' IDENTIFIED BY PASSWORD '*50127D5E02833F70F089E12126AD6C841843B992' |
| GRANT ALL PRIVILEGES ON `sem3_prd`.* TO 'sem3_prd'@'218.247.217.66' |
+-------------------------------------------------------------------------------------------------------------------------------+
执行更新:
update mysql.user set host='192.123.211.110' where host like '%218.247.217.66%';
flush privileges;
查看结果:
show grants for sem3_prd@'192.123.211.110';
+--------------------------------------------------------------------------------------------------------------------------------+
| Grants for sem3_prd@192.123.211.110 |
+--------------------------------------------------------------------------------------------------------------------------------+
| GRANT SHOW DATABASES ON *.* TO 'sem3_prd'@'192.123.211.110' IDENTIFIED BY PASSWORD '*50127D5E02833F70F089E12126AD6C841843B992' |
+--------------------------------------------------------------------------------------------------------------------------------+
发现丢失了对 sem3_prd库的访问权限!!!
这里首先想到的当然是db表的原因,因为db存放的是账号对库的权限信息,好现在查询如下:
查看当前host 192.123.211.110对应的库权限
select * from db where host like '%192.123.211.110%' \G
Empty set (0.00 sec)
查看原始host 218.247.217.66 对应的库权限
select * from db where host like '%218.247.217.66%' \G
*************************** 1. row ***************************
Host: 218.247.217.66
Db: sem3_prd
User: sem3_prd
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Execute_priv: Y
Event_priv: Y
Trigger_priv: Y
1 row in set (0.00 sec)
一目了然了,是因为db里的host信息没有修改导致对库的权限丢失,好现在执行更新
update mysql.db set host='192.123.211.110' where host like '%218.247.217.66%';
flush privileges; -- 这里需要注意如果不flush 重新加载权限表,下面的查询将无法显示修改的效果
在查看一下权限信息:
show grants for sem3_prd@'192.123.211.110';
+--------------------------------------------------------------------------------------------------------------------------------+
| Grants for sem3_prd@192.123.211.110 |
+--------------------------------------------------------------------------------------------------------------------------------+
| GRANT SHOW DATABASES ON *.* TO 'sem3_prd'@'192.123.211.110' IDENTIFIED BY PASSWORD '*50127D5E02833F70F089E12126AD6C841843B992' |
| GRANT ALL PRIVILEGES ON `sem3_prd`.* TO 'sem3_prd'@'192.123.211.110' |
+--------------------------------------------------------------------------------------------------------------------------------+
看到红色字体,突然有一种内牛满面的赶脚。
ps:反思,这其实不是一个技术问题,而是粗心大意。做为一个dba很多时候需要细心,细心再细心!
不要迷恋权威,但也不要太相信自己,做事之前一定要三思而后行,多测试,测试还是测试。还好这次
操作影响不大,否则后悔都来不及,前车之鉴,诸君亦请留意!
- 关于mysql 修改权限表user字段host导致权限丢失的问题
- mysql数据库user表host字段的%问题
- Mysql User表权限字段说明
- mysql 无权限修改user 【修改root密码问题】
- mysql user权限表
- 关于修改mysql远程访问权限的问题
- Mysql User表权限字段说明全介绍
- Mysql User表权限字段说明全介绍
- 关于mysql权限的问题
- 关于mysql权限的问题
- MySQL修改root用户密码引起的root超级权限丢失的问题(Mac平台
- 关于权限的修改
- mysql user表root 用户修改权限后出现无法访问数据库的解决方法
- linux的mysql数据库的由于权限问题看不到mysql库user表
- linux的mysql数据库的由于权限问题看不到mysql库user表
- 遇到关于MySQL权限的两个问题
- 关于iOS10 获取权限导致Crash问题的解决办法
- mysql权限丢失
- Unity3D美工需要知道的知识
- 嵌套For循环性能优化案例
- 程序员的奋斗史(二十三)——做自己 最真实
- XML语言
- Android开发 R.java 无法生成解决方法(实践+整理)
- 关于mysql 修改权限表user字段host导致权限丢失的问题
- 在多核上使用多线程
- 如何学习自动化测试
- 微信公众平台开发解惑
- Linux文件目录结构
- C# 多线程异常捕捉。
- Unity3D Android手机开发环境配置
- Linux 引导启动程序(boot)
- javascript DOM操作