目录
三、使用zhubajie@localhost登录DB,并查看取消权限操作是否生效
1、需求(要干的活):mysql中,当对某一用户多次赋予权限后,由于各种原因,需要将此用户的权限全部取消。
2、处理方法(请人干活):第一个闪现在脑海里,挂在嘴边,捧在手心的人肯定是revoke。
3、原因:取消权限这活,非 revoke莫属,她干活效率高。
但有时候revoke可能并不会按咱们的意愿执行,来看看例子:
一、授权并查看相应权限
首先查看下用户 zhubajie@localhost 的权限:
show grants for zhubajie@localhost;
然后给该用户赋予所有数据库的所有权限
grant all privileges on *.* to zhubajie@localhost;
最后使用zhubajie@localhost登录DB,检查授予的权限是否生效:
对mysql和salary 库下的表都可进行select操作。
二、取消此用户的所有权限
revoke all privileges on *.* from zhubajie@localhost;
三、使用zhubajie@localhost登录DB,并查看取消权限操作是否生效
查看下用户 zhubajie@localhost 的权限,发现依然有对salary库下所有表的select权限:
四、测试结果
我们很可能以为,命令:
revoke all privileges on *.* from zhubajie@localhost
已经将该用户所有权限取消,此时该用户已经没有任何权限了,而实际上,该用户依然有salary库下所有表的select权。
MySQL权限机制中,在一个数据库上多次赋予权限,权限会自动合并;但在多个库上多次赋予权限,每个库上都会认为是单独的一组权限。若要收回,必须单独对相应的库使用revoke命令。
看来 revoke也有划水摸鱼的时候。