目录
?
?
? ? ? ? (3). Q1:?如果登录名只能对应一个用户 不可多个 (WHY?)?
Q2:虽然显示命令已经成功执行 但是这里不需要显示 SC吗??
?
概念不再赘述
? ? ? ?存取控制机制组成
DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则
用户发出存取数据库操作请求,DBMS查找数据字典,进行合法权限检查
用户权限定义和合法权检查机制一起组成了DBMS的存取控制子系统
常用存取控制方法
?
?
(将对指定操作对象的指定操作权限授予指定的用户 )
[例4.1] 把查询Student表权限授给用户U1
注:(1),写table会提示‘to'附近有语义错误 (T-Sql)
? ? ? ?(2),所授权的用户必须存在
?
? ? ? ?重复的话会提示
grant select
on Student
to LY;
?
[例4.2] 把对Student表和Course表的全部权限授予用户U2和U3
标准SQL
grant all priviliges
on table Student,Course
to U2,U3;
T-Sql
会提示
去掉 priviliges
只能
grant all
on Student
to U2,U3;
grant all
on Course
to U2,U3;
?但是也会提示
但是已经有
?
?
[例4.3] 把对表SC的查询权限授予所有用户
grant select
on SC
to public;
[例4.4] 把查询Student表和修改学生学号的权限授给用户U4
对属性列的授权时必须明确指出相应属性列名
grant update(Sno),select
on Student
to U4;
?
?[例4.5] 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
grant insert
on SC
to U5
with grant option;
?
执行例4.5后,U5不仅拥有了对表SC的INSERT权限,
?还可以传播此权限:
同样,U6还可以将此权限授予U7:?但U7不能再传播此权限。
grant insert
on SC
to U6
with grant option;
grant insert
on SC
to U7;
?
[例4.8] 把用户U4修改学生学号的权限收回 (from)
revoke update(Sno)
on Student
from U4;
?
[例4.9] 收回所有用户对表SC的查询权限
revoke select
on SC
from public;
?
[例4.10] 把用户U5对SC表的INSERT权限收回
revoke insert
on SC
from U5;
会提示?
?因为:将用户U5的INSERT权限收回的时候应该使用CASCADE,否则拒绝执行该语句
?如果U6或U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,系统只收回直接或间接从U5处获得的权限
revoke insert
on SC
from U5 cascade;
? ? ? ?被命名的一组与数据库操作相关的权限
? ? ? ?优点:简化角色是权限的集合。可以为一组具有相同权限的用户创建一个角色。
? ? ? 学生是一类人(是一个”角色“),而我们是学生,每个个体又是一个对象(”用户“)
授予这个角色的全部权限(同样是WITH ADMIN OPTION)
角色的创建
CREATE? ROLE? <角色名>
给角色授权
GRANT <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…
将一个角色授予其他的角色或用户
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
该语句把角色授予某用户,或授予另一个角色
授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION
指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色
一个角色的权限:直接授予这个角色的全部权限加上其他角色
授予这个角色的全部权限
角色权限的收回
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
用户可以回收角色的权限,从而修改角色拥有的权限
REVOKE执行者是
角色的创建者
?
[例4.11] 通过角色来实现将一组权限授予一个用户。
create role R1;
--使角色R1拥有的Student表的select,updata,insert权限
grant select,update,insert
on Student
to R1;
--将这个角色授予U1,U2,U3。使他们具有角色R1所包含的全部权限
grant R1
to U1;
--可以一次性通过R1来回收U1的这3个权限
revoke R1
from U1;
不懂啊不懂
exec sp_addrolemember 'R1','U1'
alter role R1
add member U1;
exec sp_addrolemember 'R1','U1'
alter role R1
drop member U1;
?
[例4.12] 角色的权限修改
grant delete
on Student
to R1;
--使角色R1在原来的基础上增加了Student表的DELETE 权限
[例4.13]
revoke select
on Student
from R1;
-- 使R1减少了SELECT权限
?
这两天在用正则表达式搞一个稍微有点复杂的东西,但是不同浏览器之间的差异可浪...
判断服务器是否安装了某种asp组件,比较常用的代码如下: 复制代码 代码如下: % '...
通用约定 标签 自闭合(self-closing)标签,无需闭合 ( 例如: img input br hr...
本文实例讲述了Laravel框架自定义分页样式操作。分享给大家供大家参考,具体如下...
MYSQL学习基础 什么是数据库 关系型数据库管理系统Relaive Databases Manager Sy...
复制代码 代码如下: '===================================== '获取内容中所有图...
本文转载自微信公众号「程序员内点事」,作者程序员内点事 。转载本文请联系程序...
引言 网络分析仪在射频微波领域应用广泛本文通过Python语言控制仪器实现自动化测...
我们或多或少都使用过各式各样的富文本编辑器,其中有一个很方便功能,复制一张...
线程同步重点 并发 同一个对象 被 多个线程 同时操作 现实生活中我们会遇到”同...