一、 实验目的
(1)理解SQL Server验证用户身份的过程,掌握设置身份验证模式的方法。
(2)理解登录账号的概念,掌握混合认证模式下登录账号的建立与取消方法。
(3)掌握混合认证模式下数据库用户的建立与取消方法。
(4)掌握数据库用户权限的设置方法。
(5)理解角色的概念,掌握管理角色技术
二、实验内容
(1)在企业管理器中打开“SQL Server属性(配置)”对话框,设置身份验证模式为“SQL Server和Windows”模式(即混合模式)。
(2)创建、管理数据库服务器的登录账号。
① 用T-SQL语句创建、查看、删除登录账号。
② 在企业管理器中使用A.5.2节中介绍的方法创建一个登录账号。
(3)创建、管理数据库用户。用户是基于数据库的名称是和登录账号相关联的。只有DBA和数据库所有者才有执行系统存储过程sp_granddbaccess的权力。
① 用T-SQL语句创建、查看、删除数据库用户。
② 使用企业管理器创建、查看、删除数据库用户。
(4)管理用户权限。用户权限的管理可以使用企业管理器,也可以使用T-SQL语句。分别使用企业管理器和T-SQL语句完成第4章习题中的用户管理和用户权限管理。
(5)创建、管理数据库角色。
三、实验环境
SQL Server 2019
四、实验前准备
基于前三次实验建立的数据库和表
五、实验步骤及实验结果
1. 设置身份验证模式为“SQL Server和Windows”模式
如下图:
2. 创建、管理数据库服务器的登录账号。
① 用T-SQL语句创建、查看、删除登录账号。
创建一个名为student、密码为111、使用的默认数据库为JWGL的登录账号。如下图:
查看登录账号:
删除登录账号
② 在企业管理器中创建一个登录账号。
在企业管理器中, 展开要在其中创建新登录名的服务器实例的文件夹, 即图中的根目录. 展开【安全性】文件夹,右键单击【登录名】, 选择【新建登录名】.
接着输入登录名, 以SQL Server身份验证为例, 输入密码, 下面的三个选项中我取消了“用户在下次登录时必须更改密码” 这一项, 再点击确定.
就可以看到刚刚新建的登录名student了.
3. 创建、管理数据库用户
用户是基于数据库的名称是和登录账号相关联的。只有DBA和数据库所有者才有执行系统存储过程sp_granddbaccess的权力。
① 用T-SQL语句创建、查看、删除数据库用户。
为数据库JWGL创建一个用户user1, 该用户登录SQL Server服务器的账号为wang, 登录密码为secret.
查看数据库用户
查看结果如下:
删除数据库中的wang用户
② 使用企业管理器创建、查看、删除数据库用户。
为数据库JWGL创建一个用户user2,该用户登录SQL Server服务器的账号为zheng,登录密码为123456。
第一步: 使用上述创建登录用户的方法创建一个登录名为zheng, 登录密码为123456的用户.
第二步: 在展开数据库【JWGL】,右键点击【安全性】,选择【新建】–>【用户】.
输入用户名为user2, 登录名选择刚才创建的zheng登录用户, 点击确定.
就可以看到刚刚创建的数据库用户user2了
要想删除数据库用户, 右键点击user2, 点击删除即可
4. 管理用户权限。
用户权限的管理可以使用企业管理器,也可以使用T-SQL语句。完成第4章习题中的用户管理和用户权限管理。
习题6.对下列两个关系模式:
学生(学号, 姓名, 年龄, 性别, 家庭住址, 班级号)
班级(班级号, 班级名, 班主任, 班长)
使用grant语句完成下列授权功能:
a. 授予用户U1对两个表的所有权限,并可给其他用户授权。
首先按上面的方法建立两个用户U1和U2, 再执行sql语句
b. 授予用户U2对学生表具有查看权限,对家庭住址具有更新权限。
c. 将对班级表查看授权授予所有用户。
d. 将对学生表的查询、更新权限授予角色R1。
e. 将角色R1授予用户U1,并且U1可继续授权给其他角色。
使用书上的语句报错(会在第六点详细说明), 所以我用了alter语句
创建、管理数据库角色。
若一个小组共3个成员,他们对JWGL具有相同的操作权限,具体权限为对Student、Course表只能进行数据查询;对SC表可以进行查询、修改、删除和插入。
可以创建一个角色(如role),给该角色赋予相应的权限,然后给每个成员建立一个登录账号(如分别为lin,wang,zheng),并将每个成员的登录账号添加为数据库角色role的成员。
使用sql语句:
第一步: 创建一个role角色并赋予上述操作权限(对Student,Course表只能进行数据查询, 对SC表可以进行查询,修改,删除和插入)
第二步: 创建3个成员, 给每个成员建立一个登录账号(lin, wang, zheng), 并且将每个成员的登录账号添加为数据库角色role的成员.
第三步: 删除角色role, 删除时必须保证它不含任何数据库用户, 即要先删除其下的所有成员
然后删除角色role
使用企业管理器:
第一步: 新建三个登录名分别为lin, wang, zheng的登录用户(此时选择不带登录名的SQL用户)
第二步: 新建一个角色role, 并且给此角色添加刚才创建的三个用户作为角色成员
第三步: 因为要让成员对Student, Course表只能进行数据查询, 对SC表可以进行查询、修改、删除和插入
首先选择一张表, 右键点击选择属性
因为已经将三个成员的登录账号添加为角色role的成员,所以此时只需要给role授予相应的权限即可.如图所示(这里以SC表为例,Student, Course表也是同样), 用户或角色选择role, 再勾选需要授予的权限即可.
评价分析及心得体会
遇到的问题:
(1) 在编写授权语句时, 按照书上的原封不动的敲就会显示报错.书上使用的都是2008版, SSMS已经不怎么兼容了, 所以只需要把table删掉即可, 并且授权每次只可以授权一张表, 不可以多张, 如下图所示:
改成下图这样即可
(2) 将角色R1授予用户U1时, 使用书上语句出现错误
采用alter语句, 结果成功执行
按照属性查看角色R1的成员, 可以找到.
通过这次实验学习到了登录名和用户名的概念及其之间的关系, 数据库登陆名和数据库用户名是有差别的,在一个数据库中是一一相对应的关系。
登录名是访问 SQL Server 的通行证,是服务器级别的对象,登录到 SQL Server 之后还要创建数据库用户才能访问数据库资源;
创建数据用户的过程实际上就是建立登录名和数据用户之间映射关系的过程,一个登录名能为多个数据库用户,这种映射关系为同一服务器上不同数据库的权限管理带来更多便利.