5. 为SPJ数据库新建用户u2,其登录名为user1。
操作:
--(1)使用存储过程完成
EXEC sp_addlogin 'user1','123','SPJ'
EXEC sp_adduser 'user1','u2'
--(2)用sql语句创建
create login user2 with password='123',default_database=spj
create user u3 for login user2
6.使用GRANT语句完成如下功能:
(1)授予用户u2对S表有SELECT 权,对P表颜色(COLOR)具有更新权限;
操作:
GRANT
SELECT on dbo.s
TO u2
GRANT
UPDATE ON dbo.p(color)
TO u2
(2)将对J表的查看权限授予所有用户;
操作:
GRANT
SELECT ON J
TO PUBLIC
(3)将对SPJ表的查询、更新权限授予角色R1;
操作:
--1. 首先创建一个角色 R1
CREATE ROLE R1
--2. 然后使用GRANT语句,使角色R1拥有spj表的SELECT、UPDATE权限
GRANT SELECT,UPDATE
ON spj
TO R1
(4)将角色R1授予用户u2;
操作:
GRANT R1
TO u2
结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181120231100772.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMTg1OTk5,size_16,color_FFFFFF,t_70)
解释:SQL不能用grant 角色 to 用户。
正解:
操作:
exec sp_addrolemember 'r1', 'u2'
结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181120231134383.png)
(5)逐一验证u2所获得的权限。
1.对于u2没有的权限,结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181120231432533.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMTg1OTk5,size_16,color_FFFFFF,t_70)
对于u2有的权限:
--(1)对s表的select权
select *
from dbo.s
结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181120231800147.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMTg1OTk5,size_16,color_FFFFFF,t_70)
--(2)对p表color有更新权
update dbo.p
set p.color = '0'
--(3)对j表的查看权限
select *
from dbo.j
--(4)对spj表的查询权限
select *
from dbo.spj
--(5)对spj表的更新权限
update dbo.spj
set sno='000'
where sno=null