数据库作业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在语法上的巨大差别,希望进一步理解,避免混淆。
标签:11,AUDIT,REVOKE,R1,GRANT,Student,SQL,SC,权限 来源: https://blog.csdn.net/qq_16183951/article/details/105250849