用SSMS工具建立SQLServer身份验证模式的登录名!

用SSMS工具建立SQLServer身份验证模式的登录名!

数据库上机 (五) 数据库安全性访问控制

一、实验目的

熟悉自主访问控制机制掌握在SQL Server中创建新登录名,创建数据库用户和角色的方法。熟练使用授权和回收语句实现自主访问控制。

二、实验内容和要求

利用前面建立的学生数据库和其中的Student、Course、SC表,并利用SSMS工具完成下列操作。

用SSMS工具建立SQL Server身份验证模式的登录名:log1、log2和log3。

方法一:图形界面方式。

方法二:SQL语句

CREATE LOGIN WITH PASSWORD=’’

郑重声明:根据正常建立的发现,并不能连接成功,一直显示失败,如果你是第一次用这个数据库软件建立建立SQL Server身份验证模式,需要选择windows和SQL混合模式,并重启服务器,如果遇到不能连接问题可以参考这篇博客,链接呈上点击此处即可

方法一:图形界面方式,打开数据库软件,在左下角找到“安全性”,点击“登录名”,得到如图所示的页面,选择SQL Server身份验证模式,输入登录名和密码就可以了。点击左上角用户映射,映射到学生数据库,点击确定后刷新一下登录名,就可以看到自己设置的登录名。

方法二:新建查询输入以下SQL语句后执行即可完成SQL Server身份验证模式的登录名:log1、log2和log3和对应密码的设置。

create login log1
with password  = '12345678' ;
create login log2
with password = '12345678' ;
create login log3
with password = '12345678' ;

用log1建立一个新的数据库引擎查询,在“可用数据库”下拉列表框中是否能选中学生数据库?为什么?

答:不能,没有访问权限。

用系统管理员身份建立一个新的数据库引擎查询,将log1、log2和log3映射为学生数据库中的用户,用户名同登录名。

(1)创建用户log1,log2,log3。

方法一:图形界面方式。

方法二:SQL语句

CREATE USER FROM LOGIN

create user log1 
from login log1 ;
create user log2
from login log2;
create user log3
from login log3 ;

(2)创建架构log1,log2,log3,架构所有者分别是用户log1,log2,log3

创建架构的方法很简单,参照此链接,点击此处查看

(3)修改log1,log2,log3用户的默认架构

在此图中出修改架构即可。

4. 在log1建立的数据库引擎查询中,现在“可用数据库”下列列表框中是否能选中学生数据库?为什么?

如图所示,显然是可以选中学生数据库的。

5. 在log1建立的数据库引擎查询中,选中学生数据库,执行下述语句,能否成功?为什

么?

SELECT * FROM Course

如图所示,显然不可以,没有对表的访问权限。

6. 在系统管理员的数据库引擎查询中,执行合适的授权语句,授予log1具有对Course表的查询权限角色权限设计5张表,授予log2具有对Course表的插入权限。

grant select
on Course
to log1;
grant insert 
on Course
to log2 ;

在系统管理员的数据库输入如下SQL语句,授权log1和log2对Course表的访问权限。

7. 用log2建立一个新的数据库引擎查询,执行下述语句,能否成功?为什么?

INSERT INTO Course VALUES('C1001''数据库基础'45)

按道理来说游戏素材,已经授予log2插入Course表的权限,执行该语句原则上来说没有问题。。

再执行下述语句,能否成功?为什么?

SELECT * FROM Course

不能,无访问Course表的权限。

8. 在log1建立的数据库引擎查询中,再次执行下述语句:

SELECT* FROM Course

这次能否成功?

原则上来说可以执行成功,因为授予了log1相应权限。

如果执行下述语句:

INSERT INTO Course VALUES(‘C103’,‘软件工程’,4, 5)

能否成功?为什么?

原则上来说不可以,因为没有授予相应权限。

9. 登陆 log3,建立一个新的数据库引擎查询,执行下述语句,能否成功?为什么?

CREATE TABLE NewTable(

C1 int,

C2 char(4))

显然没有创建表的权限

10. 授予log3在学生数据库中具有创建表的权限。

Grant CREATE TABLE to log3

11. 登陆log3用户,建立一个新的数据库引擎查询中角色权限设计5张表,再次执行第9题的语句,能否成功?为什么?

如果执行下述语句:

SELECT * from NewTable

能否成功?为什么?

按道理来说,已经授予log3创建新表的权限,执行该语句原则上来说不应该有问题。

12.新建登陆名log4,映射为学生数据库用户log4,为该用户选定角色为db_Owner,登陆log4,看看是否能够访问数据库,执行以下操作

(1)Select * from student

(2)INSERT INTO Course VALUES(‘C1016’,‘VB基础’,4,5)

(3)CREATE TABLE NewTable2(

C1 int,

C2 char(4))

能否进行,为什么?

(1)可以访问,有访问权限。

(2)可以访问,有插入权限。

(3)可以访问游戏图片素材,有创建新表的权限。

13.新建角色R1,赋予查询student表、更新Sc表grade列权限,将角R1授予用户log1,log2,接着执行

(1)Select * from student

(2)Update sc

Set grade=grade*0.9

验证log1,log2用户的相应权限。

create role R1
grant select 
on Student
to R1
with grant option ;
grant update
on SC
to R1
with grant option ;
EXEC sp_addrolemember 'R1', 'log1'
EXEC sp_addrolemember 'R1', 'log2'

按道理来说,此时log1和log2应该已经具有角色权限,可以执行成功以上两条语句。

14. 用户log1的权限如果想转授权给log3,应该怎么操作?动手实践验证你的想法。

转授权就可以。

上述诸题,如果操作能够成功,请给出相应SQL语句以及结果截屏,如果不能成功,请说明原因。

在第一次实验结果的基础上进行本次数据查询操作,提交查询结果。

实验报告应包括:实验标题、实验目的,实验内容,实验结果,实验小结

其中实验结果应包含本次实验要用到的SQL语句,能够执行的操作对结果进行截图,不能的进行也请对系统的拒绝结果窗口进行截图,并分析不能进行的原因。

实验小结

# 人潮拥挤,离别才是常态,相逢只是意外!

另注:博主遇到了一个bug,看了各种解决方案,然而并未解决,所以博客阐述的不够具体,时间有限,思路仅供参考!

文章来源:https://blog.csdn.net/nuist_NJUPT/article/details/106220380