太原理工大学数据库实验三(2021.4.19)
以下代码需按步骤复制到查询控制台
博主用的软件是DataGrip,与SQL Server Management Studio在操作上有些差别
1.以Windows凭据登录,逐句执行下面的代码
-- 1. 创建登录名
-- 用户要访问数据库,必须首先登录到服务器上。因此,首先需要为用户创建登录名。以系统管理员账户登录,进入数据库服务器,执行以下的操作。
-- (1)分别创建两个登录名王明和李刚:
CREATE LOGIN 王明 WITH password='123456'
CREATE LOGIN 李刚 WITH password='123456'
-- 其中:“王明”、“李刚”是用于登录数据库器的登录名,Password用于指定用户登录密码。
-- (2)展开服务器的“安全性”下的“登录名”,检查登录名是否创建成功。
-- 2. 创建数据库用户
-- 用户登录服务器后,要进入某一数据库访问,需要为登录用户在该数据库中建立一个数据库用户名。
-- 对创建的两个登录名,在TEST数据库分别为其创建两个数据库用户:
-- (1)切换到TEST数据:
-- USE TEST
-- (2)创建登录名在TEST数据库中的用户:
CREATE USER 王明db FOR LOGIN 王明
CREATE USER 李刚 FOR LOGIN 李刚
-- 其中:“王明”是登录名,“王明db”是该登录名在TEST数据库的用户名。这两个名称也可以同名。
-- (3)展开ST数据库的“安全性”下的“用户”,检查数据库用户是否创建成功。
-- 3. 授权
-- 在数据库中添加新用户后,新用户没用访问数据库中数据的权限,需要数据库管理人员给其授予相关的权限后,才能执行相应的操作。
-- 按照表3.1,授权如下:
-- (1)授予王明权限
GRANT SELECT ON Student TO 王明db
-- (2)授予李刚权限
GRANT SELECT ON Student TO 李刚
GRANT INSERT,UPDATE,DELETE ON Student TO 李刚
GRANT SELECT ON Course TO 李刚
2.用用户密码,以王明的身份登录,密码123456
-- 3.3 检查权限控制
-- 分别以两个登录名登录数据库,执行一些对数据库的操作,检查用户否允许执行相关的操作。
-- 1. 检查王明的权限
-- 以用户“王明”登录,执行如下的操作,检查能否正确的运行:
SELECT * FROM Student
INSERT INTO Student(Sno,Sname,Sclass) VALUES('20101101','高志','1008')--失败原因:王明没有对student的插入权限,切违反了完整性规则
UPDATE Student Set Sage = Sage +1--失败原因:王明没有对student的更新权限
DELETE FROM Student Where Sno = '20101010'--失败原因:王明没有对student的删除权限
SELECT * FROM Course
SELECT * FROM SC
-- 若不能运行,请解释为什么不能执行。
3.用用户密码,以李刚的身份登录,密码123456
-- 以用户“李刚”登录,执行如下的操作,检查能否正确的运行:
SELECT * FROM Student
INSERT INTO Student(Sno,Sname,Sclass) VALUES('20101201','钱红','1008')--失败原因:违反了数据完整性原则
UPDATE Student Set Sage = Sage + 1
DELETE FROM Student Where Sno = '20101210'
SELECT * FROM Course
INSERT INTO Course VALUES('20','FORTRAN语言',NULL,2)--失败原因:李刚对Coures表只有查询权限,没有其他权限
UPDATE Course Set Ccredit = 3 WHERE Cno='2'--失败原因:李刚对Coures表只有查询权限,没有其他权限
DELETE FROM Course Where Cno = '6'--失败原因:李刚对Coures表只有查询权限,没有其他权限
-- 若不能运行,请解释为什么不能执行。
4.以Windows凭据登录,逐句执行下面的代码
-- 3. 增加李刚的权限
-- 以用户“李刚”登录,执行如下的操作:
-- (1) 检查李刚能否对SC表执行查询、插入、修改、删除操作。
-- (2) 使用管理员帐号给李刚授予对SC表的查询、插入、修改、删除权限
grant select ,insert ,update ,delete on SC to 李刚
5.用用户密码,以李刚的身份登录,密码123456
-- (3) 再次检查李刚能否对SC表执行查询、插入、修改、删除操作。
--查询
select *from SC
--插入
INSERT INTO SC VALUES('20100001',2,NULL)
--修改
update SC set Cno = 3 where Cno = 2 and Grand = null
--删除
delete SC where Cno = 3 and Sno = '20100001'
6.以Windows凭据登录,逐句执行下面的代码
-- 当不希望用户执行某些对数据库的操作时,可以撤销先前授予用户的操作权限。
-- (1)撤销权限
-- 以系统管理员帐号登录,撤销“李刚”对Student表的权限:
REVOKE SELECT ON Student FROM 李刚
REVOKE INSERT,UPDATE,DELETE ON Student FROM 李刚
7.用用户密码,以李刚的身份登录,密码123456
-- (2)检查权限
-- 以“李刚”帐号登录,检查如下的命令能否正确的运行:
SELECT * FROM Student--不能
INSERT INTO Student(Sno,Sname,Sclass) VALUES('20101501','赵光','1008')--不能
UPDATE Student Set Sage = Sage + 1--不能
DELETE FROM Student Where Sno = '20101510'--不能
完结撒花~