首先我们得有一个数据库,数据库里有表
职工表: 部门表:
接下来的操作都是针对以上的表
其次我们来建立登录用户
create login 王明 with password='123456'--创建登录用户,
登录名为王明,密码为123456.
创建登录名之后,登录用户还不能对数据库进行操作,还要对登录用户创建数据库用户
create user U1 for login 王明--创建数据库用户关联登录用户
这时候登录王明的账户,数据库会自动映射到数据库用户U1,由U1来进行对数据库的操作。
不过,只创建了用户,而用户还没有获得对数据库的操作权力,我们就要对数据库用户进行权力分配
有时间的小伙伴可以额外花点时间点击链接了解详细
1)设置Sql server用户对表、视图、存储过程、架构的增删改查权限
2)Schema是什么鬼?
3)什么是存储过程?
4)sql server 微软官方文档
好了,接下来我们进行用户的权力分配
题1:用户王明对两个表有SELECT权利;
grant select --对于职工数据表
on worker
to U1
grant select --对于部门数据表
on deparyment
to U1
其中分配格式为 :
grant [权力] on [表名] to [用户名]
这里要注意,权力可以多个,但在针对的表名只能一个
错误用例
--数据库会报错
grant select
on worker,deparyment
to U1
--不会报错用例
grant select,update
on worker
to U1
题二:用户刘星对职工表有SELECT权利,对工资字段具有更新权利;
grant select --查询权力
on worker
to U3
grant update --字段更新权力
on worker(wages)
to U3
对于某个字段的权力分配:
grant [权力名] on [表名(字段名)] to [用户名]
题三:****用户张新具有修改这两个表结构的权利;
grant view definition
on worker
to U4
grant view definition
on deparyment
to U4
题四:用户周平具有对两个表所有权利,并具有给其他用户授权的权利;
grant all
on worker
to U5
with grant option
授予用户授权的方法,就是在授权语句后加上with grant option
用户就在获得权力的同时,也可将获得的权力分配给其他用户
题五: 用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权利,他不能查看每个人的工资。
这个要注意,权力分配最小为 select等语句,不能在加入max、min等聚集函数
因此我们要曲线救国,创建一个存有最高,最低,平均工资的视图,把select该视图的权力分配给用户杨兰
go
create view Weges(max,min,avg) --创建视图
as
select MAX(wages),MIN(wages),AVG(wages)
from worker
go
--分配权力
grant select
on Weges
to U6
我们已经对用户的权力进行了分配,那么我们如何收回权力呢?
题六:收回用户王明对两个表有SELECT权利;
revoke select
on worker
to U1
revoke select
on deparyment
to U1
对的,我们收回权力的格式与分配权力一样 只是把grant 换成 revoke
revoke [权力] on [表名] to [用户名]
要注意题四的权力收回
grant all --题四的权力分配
on worker
to U5
with grant option
revoke all --权力收回
on worker
to U5 CASCADE
细心的小伙伴发不同了吗?
就是要在[用户名] 后加上 CASCADE
那为什么要加上CASCADE 呢?是因为你收回的U5的权力但是没有收回他可以给别人授权的权力哦
用户权限回收问题
版权归原作者 weighless1129 所有, 如有侵权,请联系我们删除。