【数据库系统概论】实验五 SQL数据库安全控制

一、实验目的

1.掌握SQL Server数据库用户基本操作
2.掌握SQL Server数据库授权及回收权限的方法

二、实验内容

  1. 创建登录用户st1,st2

  2. 使st1,st2成为stu_db的合法用户
    EXEC sp_grantdbaccess N’st1’ /sp_grantdbaccess为存储过程

  3. 以st1登录,是否能对student表进行查询、修改、删除?

  4. 以管理员登录,授予st1查询、修改student,sc表的权限,并允许st1将权限转授。将student表中学生年龄增加1岁。

  5. 以st1登录,将对student,sc表的查询、修改权限授予st2。

  6. 以st2登录,查询student,将sc表中学生成绩增加10%。

  7. 收回st1对表student,sc的查询、修改权限。

  8. 删除用户st1,st2。删除登录名st1,st2。

三、问题和要求

1. 创建登录用户st1,st2

create login st1
with
password=‘123’

-- 创建登录用户st1,st2
CREATE LOGIN st1 WITH PASSWORD='A123456a';
CREATE LOGIN st2 WITH PASSWORD='A123456a';

账号创建成功:
image.png
使用st1账户进行登录:
image.png
访问stu_db数据库:
image.png

2. 使st1,st2成为stu_db的合法用户

EXEC sp_grantdbaccess N’st1’ /sp_grantdbaccess为存储过程
使用管理员账户登录。使用【USE stu_db;】命令进入到stu_db数据库中,执行:

EXEC sp_grantdbaccess 'st1';
EXEC sp_grantdbaccess 'st2';

已经能够进入数据库
image.png

3. 以st1登录,是否能对student表进行查询、修改、删除?

查询用户属性显示无任何权限:
image.png
无法查询到用户表:
image.png
无法进行创建、添加、删除:
image.png

4. 以管理员登录,授予st1查询、修改student,sc表的权限,并允许st1将权限转授。将student表中学生年龄增加1岁。

授予用户st1查询、修改student,sc表的权限:

GRANT SELECT,UPDATE 
ON T.Student
TO "st1" 
WITH GRANT OPTION;

GRANT SELECT,UPDATE 
ON T.SC
TO "st1" 
WITH GRANT OPTION;

image.png
登录账户st1将student表中学生年龄增加1岁:

UPDATE T.Student SET sage=sage+1;

image.png
更新前:
image.png
更新后:
image.png

5. 以st1登录,将对student,sc表的查询、修改权限授予st2。
GRANT SELECT,UPDATE 
ON T.Student
TO "st2";

GRANT SELECT,UPDATE 
ON T.SC
TO "st2";

image.png
image.png

6. 以st2登录,查询student,将sc表中学生成绩增加10%。

st2账户进行登录:
image.png
查询student:
image.png
将sc表中学生成绩增加10%:
image.png
更新前:
image.png
更新后:
image.png

7. 收回st1对表student,sc的查询、修改权限。

登录管理员账户sa,收回st1的权限:

REVOKE SELECT,UPDATE 
ON T.Student
FROM "st1"
CASCADE;

image.png
image.png

8. 删除用户st1,st2。删除登录名st1,st2。
EXEC sp_dropuser 'st1';
EXEC sp_droplogin 'st1';
EXEC sp_dropuser 'st2';
EXEC sp_droplogin 'st2';
DROP USER "st1";
DROP USER "st2";
DROP LOGIN "st1";
DROP LOGIN "st2";
posted @ 2022-10-29 19:58  明金同学  阅读(47)  评论(0)    收藏  举报  来源