SQL中使用grant和revoke语句向用户授予或回收对数据的操作权限。grant用于授予,revoke用于收回。
grannt <权限>[,<权限>]...
on <对象类型> <对象名>[,<对象类型> <对象名>]…
to <用户>[,<用户>]...
[with grant option];
如果指定了with grant option
子句,则获得权限的用户还可以把获得的权限再授予给其他用户(但不允许循环授权)。没有指定则这个用户只能使用该权限但不能传播该权限。
grant select
on table student
to U1;
在sqlserver中报错:
去掉table可运行
grant select
on student
to U1;
这里还需要注意用户建立的时候别建错了位置,需要建在对应的库-安全性-用户里
grant all priviliges
on table Student,Course
to U2,U3;
结果
去掉,priviliges和table后,又提示
原因是T-SQL中grand一次只能给一个用户授予权限,所以给多个用户授权只能分开写。
grant all
on Student
to U2,U3;
grant all
on Course
to U2,U3;
提示:ALL 权限已不再推荐使用,并且只保留用于兼容性目的。它并不表示对实体定义了 ALL 权限。
但功能上并没有收到什么影响。select、insert、update、delete、references权限都拿到了。
grant select
on SC
to public;
grant update(Sno),select
on Student
to U4;
-- 对属性列进行授权须指出相应属性列名
grant insert
on SC
to U5
with grant option;
执行此SQL语句后,U5不仅拥有了对表的insert权限,还可以传播此权限。例如U5可以将此权限授权给U6(例4.6)
首先解决创建用户的问题
因为之前是在对应的库下面建立的用户,因此做到这道题时无法登录,用下面的方法可以用新建的用户登录服务器。
方法一:运行代码
CREATE LOGIN U_1 WITH PASSWORD='123456';
CREATE USER U1 FOR LOGIN U_1;
方法二:用图形用户界面创建
再点击左栏中的用户映射,
点击确定即可。
之后就可以接着做题了。
首先需要通过U5登录到服务器
grant insert
on SC
to U6
with grant option;
再登录U6查看权限,
grant insert
on SC
to U7;
但U7不能再把权限给其他用户了。
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
revoke update(Sno)
on Student
from U4;
revoke select
on SC
from public;
revoke insert
on SC
from U5 cascade;
-- 将用户U5的INSERT权限收回的时候应该使用CASCADE,否则拒绝执行该语句
数据库角色是被命名的一组与数据库操作相关的权限。可以简化授权过程。
1.角色的创建
create role<角色名>
2.为角色授权
grant<权限>[,<权限>]...
on <对象类型>对象名
to <角色>[,<角色>]...
3.将一个角色授予其他的角色或用户
grant<角色1>[,<角色2>]…
to <角色3>[,<用户1>]…
[with admin option]
一个角色的权限:直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限
4.角色权限的收回
revoke <权限>[,<权限>]...
on <对象类型> <对象名>
from <角色>[,<角色>]...
首先创建一个角色
create role R1;
然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限
grant select,update,insert
on Student
to R1;
将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限
grant R1
to 王平,张明,赵玲;
--提示 R1附近出现问题
解决方法:
方法一: 来源
alter role R1
add member 王平;
alter role R1
add member 张明;
alter role R1
add member 赵玲;
方法二:来源
EXEC sp_addrolemember 'R1','王平'
EXEC sp_addrolemember 'R1','张明'
EXEC sp_addrolemember 'R1','赵玲'
也可以一次性通过R1来回收王平的这3个权限
revoke R1
from 王平;
提示错误
可用:
exec sp_droprolemember 'R1','王平';
grant delete
on Student
to R1;
revoke select
on Student
from R1;
完全分布式平台搭建 尚硅谷丨大数据Hadoop 3.x2021全新升级/部署源码实战 1、基...
在这种配置下我们要实现关键词不区分大小写搜索并高亮显示要借助ASP的正则处理了...
本文实例讲述了js使用正则子表达式匹配首字母与尾字母相同单词的方法。分享给大...
制作Python数字华容道可选择关卡 由于比赛需要我这边制作了一份数字华容道内含有...
本文转载自微信公众号「石杉的架构笔记」,作者中华石杉。转载本文请联系石杉的...
前言 WAF工作原理 在实际的渗透测试过程中经常会碰到网站存在WAF的情况。网站存...
PTA7-12 城市间紧急救援 (25 分) 关于这个题呢我当时也想了很久没有一点头绪。所...
for循环 在while循环中打印1-10代码如下 int main ( ) { int i 1 ; //初始化 whi...
数据仓库是专用于获...
功能:返回与正则表达式查找内容匹配的第一个子字符串的位置 语法:stringObj.se...