数据库作业11:SQL练习7 - GRANT/ REVOKE / AUDIT

[4.1]
把查询Student表权限授给用户U1

GRANT   SELECT 
ON   TABLE   Student 
TO   U1;

由于SQL Server使用的SQL语言版本为T-SQL,所以上面的命令会引发错误:
“TO”附近有语法错误。应为DOUBLECOLON,或ID。
经查阅相关资料,修改为如下命令,成功执行。

GRANT SELECT 
ON    Student 
TO   U1;

在这里插入图片描述
[4.2]
把对Student表和Course表的全部权限授予用户U2和U3。

GRANT ALL PRIVILIGES 
ON TABLE Student,Course 
TO U2,U3;

由于SQL Server使用的SQL语言版本为T-SQL,所以上面的命令会引发错误:
PRIVILIGES”附近有语法错误。
经查阅相关资料,修改为如下命令,成功执行。

GRANT ALL
	ON Student 
		TO U2,U3;
GRANT ALL 
	ON Course
		TO U2,U3; 

收到警告信息:
ALL 权限已不再推荐使用,并且只保留用于兼容性目的。它并不表示对实体定义了 ALL 权限。
在这里插入图片描述
[4.3]

GRANT SELECT 
ON TABLE SC 
TO PUBLIC;

由于SQL Server使用的SQL语言版本为T-SQL,所以上面的命令会引发错误:
关键字 ‘TABLE’ 附近有语法错误。
经查阅相关资料,修改为如下命令,成功执行。

GRANT SELECT 
ON  SC 
TO PUBLIC;

[4.4]
把查询Student表和修改学生学号的权限授给用户U4

UPDATE(Sno),SELECT
ON Student
TO U4

在这里插入图片描述
[4.5]
把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户

GRANT INSERT
ON SC
TO U5
WITH GRANT OPTION

[4.6]
执行例4.5后,U5不仅拥有了对表SC的INSERT权限,还可以传播此权限:

GRANT INSERT 
ON SC 
TO U6
WITH GRANT OPTION;

[4.7]
同样,U6还可以将此权限授予U7。

GRANT INSERT 
ON SC 
TO U7;

执行了例4.1~例4.7语句后学生-课程数据库中的用户权限定义表:
在这里插入图片描述
[4.8]
把用户U4修改学生学号的权限收回。

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 CASCADE

将用户U5的INSERT权限收回的时候应该使用CASCADE,否则拒绝执行该语句。
如果U6或U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,系统只收回直接或间接从U5处获得的权限。

执行例4.8~4.10语句后学生-课程数据库中的用户权限定义表:
在这里插入图片描述
[4.11]
通过角色来实现将一组权限授予一个用户。

--首先创建一个角色 R1
CREATE  ROLE  R1;
--然后使用GRANT语句,使角色R1拥有Student表的	SELECT、UPDATE、INSERT权限
GRANT SELECT, UPDATE, INSERT 
ON Student 
TO R1;
--将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限
GRANT R1 
TO 王平,张明,赵玲;

由于SQL Server使用的SQL语言版本为T-SQL,所以上面的命令会引发错误:
“R1”附近有语法错误。
经查阅相关资料,修改为如下命令,成功执行。

CREATE  ROLE  R1;
GRANT SELECT, UPDATE, INSERT 
ON Student 
TO R1;
ALTER ROLE R1 ADD MEMBER 王平;
ALTER ROLE R1 ADD MEMBER 张明;
ALTER ROLE R1 ADD MEMBER 赵玲;

在这里插入图片描述
也可以一次性通过R1来回收王平的这3个权限:
在这里插入图片描述
[4.12]
角色的权限修改:使角色R1在原来的基础上增加了Student表的DELETE权限。

GRANT DELETE 
ON Student
TO R1;

[4.13]
使R1减少了SELECT权限。

REVOKE SELECT 
ON Student
FROM  R1;

[4.14]
建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明。

--先建立计算机系学生的视图CS_Student
CREATE VIEW CS_Student
AS 
SELECT  *
FROM   Student
WHERE  Sdept='CS';
--在视图上进一步定义存取权限
GRANT  SELECT
ON  CS_Student  
TO 王平;

GRANT ALL 
ON  CS_Student  
TO  张明; 

在这里插入图片描述
什么是审计?

  • 审计日志(Audit Log)将用户对数据库的所有操作记录在上面
  • 审计员利用审计日志监控数据库中的各种行为,找出非法存取数据的人、时间和内容。‘

审计功能的可选性

  • 审计很费时间和空间
  • DBA可以打开或关闭审计功能
  • 审计功能主要用于安全性要求较高的部门

AUDIT语句和NOAUDIT语句

  • AUDIT语句:设置审计功能
  • NOAUDIT语句:取消审计功能

[4.15]
对修改SC表结构或修改SC表数据的操作进行审计。

AUDIT ALTER,UPDATE  
ON  SC;

“,”附近有语法错误。
[4.16]
取消对SC表的一切审计。

NOAUDIT  ALTER,UPDATE  
ON  SC;

注:上面两条命令在T-SQL下无法执行。
【总结】通过本次实验,深刻体会到了T-SQL与标准SQL在语法上的巨大差别,希望进一步理解,避免混淆。

发布了10 篇原创文章 · 获赞 14 · 访问量 1844

猜你喜欢

转载自blog.csdn.net/qq_16183951/article/details/105250849
今日推荐