实验6 SQL Server 数据库的完整性和安全管理
实验类型:●验证性实验 ○综合性实验 ○设计性实验
实验目的:
学习构建SQL Server 2012 数据库的完整性约束(实体完整性,参照完整性,用户自定义完整性)
深刻理解SQLServer 2012 实例级别的安全机制,深刻理解SQLServer 2012 数据库级别的安全机制,深刻理解SQLServer 2012 数据库对象级别的安全机制。
掌握数据库的完整性和安全授权管理的操作和SQL语句
实验内容和步骤:
1.使用SQL Server 2012创建数据库和表:创建s_t数据库、创建学生表student、课程表course、选课表SC。要求对每个表要设计有主键,学生表student与选课表SC之间有参照关系,课程表course和选课表SC之间有参照关系。课程名要求是唯一的。参考数据库系统概论课本82-83页。
2.观看视频6—用户和权限管理。分别通过企业管理器和SQL语句(通过查询编辑窗口编辑和执行)为MS SQL Server 2012的服务器实例创建一个使用Windows身份验证的SQL Server服务器登录名(也叫登录帐号);分别通过企业管理器和SQL语句(通过查询编辑窗口编辑和执行)为MS SQL Server 2012的服务器实例创建一个使用SQL Server身份验证的SQL Server服务器登录名(也叫登录帐号)。[提示:1) 用SQL 语句CREATE LOGIN login_name FROM WINDOWS 创建使用Windows身份验证的SQL Server服务器登录名(也叫登录帐号),其中login_name是一个格式为:“机器名\Windows用户名”的字符串,Windows用户名是Windows中已经存在的一个账户名。2) 用SQL 语句CREATE LOGIN login_name WITH PASSWORD=login_password 创建使用SQL Server身份验证的SQL Server服务器登录名(也叫登录帐号),其中login_name和 login_password 是SQL Server身份验证方式下登录SQL Server服务器时要提供的账户名和密码,login_name和 login_password 都必须以字符串的形式出现在SQL语句中。]
3 请用你在2中创建的四个登录帐户登录SQL Server服务器。以便证实你创建的四个登录帐户是有效的。于此同时练习企业管理器上断开服务器实例和连接到服务器实例的操作。
4.观看视频6—用户和权限管理。分析和比较数据库系统概论课本第145页创建数据库用户的语法格式与视频6中讲述的SQL Server 2012中创建数据库用户的语法格式上的异同。通过企业管理器和SQL语句(在查询编辑窗口编辑和执行)对s_t数据库创建一个用户名为你的姓名(用汉语拼音表示)。
5.关于服务器登录帐户与数据库用户有这么几个结论需要你自己设计实验来验证。数据库用户隶属于某个数据库的,不同数据库下的用户名可以相同(就此举例说明和验证),数据库用户是主体,数据库对象是客体,主体对客体有一定的操作权限(就此举例说明和验证);服务器登录帐户隶属于SQL Server服务器实例,服务器登录帐户是主体,SQL Server服务器实例下的数据库等是客体,这个层面上的主体对客体也有一定的操作权限。若服务器登录帐户要对某个数据库实施操作,服务器登录帐户必须和数据库的某个用户建立起映射关系,一个服务器登录帐户可以访问多个数据库—即这要求一个服务器登录帐户映射到多个数据库且一个服务器登录帐户只能映射到数据库的一个用户上,也就是说,一个服务器登录帐户只能在每个数据库中映射一次(就此举例说明和反证)。
6.把查询student表的权限---即Select权限授给你在4中创建的用户,把对SC表的查询权限和插入权限—即Select权限和Insert权限授予所有用户,接下来收回你在4中创建的那个用户目前对student表的Insert权限。
7 创建一个s_t数据库的角色R1,并结合数据库系统概论课本第146页-147页内容和例题进行实验练习,其中涉及到用户时请使用你在4中创建的哪个用户。通过实验深刻理解角色是一组权限的集合这一结论
实验思考: SQLServer 2012 实例级别的安全机制除了Windows身份验证方式的SQL Server服务器登录和SQL Server身份验证方式的SQL Server服务器登录以外,还有什么登录验证方式?。你在新建登录名(登录服务器的登录名)的窗口上发现SQL Server2012是否还有其他安全登录验证方式?登录名映射到证书,这里的证书是什么意思?登录名映射到非对称秘钥,这里的非对称秘钥又是什么意思?
实验报告:根据实验情况和结果, 撰写并递交实验报告。
实验总结(学会了......; 掌握了......; 训练了......; 发现了......; 今后学习中......有待提高。)
电子报告word文件命名规则:专业班级-学号后两位-实验X-姓名.doc, 如信息123班学号为201212030315的郭海涛同学实验7报告word文件命名则应是:信息123-15-实验7-郭海涛.doc, 其中 .doc是Word文件扩展名。
参考程序
1.点击“新建查询”按钮,输入创建命令点击“执行”按钮即可。
2.打开SQL Server Manager管理器,在左面找到 ‘安全性’ 单击右键 选择‘新建”,“登录” 弹出一个对话框,在登录名中输入你的登录号,选择’Windows身份验证’,选择要映射的数据库。
3.打开SQL Server Manager管理器,在左面找到 ‘安全性’ 单击右键 选择‘新建”,“登录” 弹出一个对话框,在登录名中输入你的登录号,选择’SQL Sever身份验证’,并输入密码, 选择要映射的数据库
点击新建查询,T-SQL语句,点击运行即可
验证“windows身份验证方式”登录
验证“SQL sever身份验证方式”登录
4.打开“s_t”数据库,鼠标点击“安全性”,鼠标右键“用户”点击“新建用户”
5.验证
(1)数据库用户隶属于某个数据库的,不同数据库下的用户名可以相同
我们在数据库“s_t”里创建了用户“haozhang”也可以在“test-2”数据库里面创建用户“Haozhang”
(2)数据库用户是主体,数据库对象是客体,主体对客体有一定的操作权限(数据库用户是主体,对象是客体。查看数据库用户“Haozhang”的属性,可以看到该用户对数据库“s_t”有插入等权限)
(3)一个服务器登录帐户只能在每个数据库中映射一次
6.点击创建的用户,点击属性进入之后回收相应属性
7.创建数据库角色R1
使 R1有select、update、insert权限
角色权限修改
角色权限删除
8.SQL sever除了windows和SQL sever服务器登录验证方式之外还有混合验证模式。这种验证模式允许用户使用windows身份验证和SQL sever身份验证方式进行数据库连接。证书是一个数字签名的安全对象,其中包含 SQL Server的公钥(还可以选择包含私钥)。 可以使用外部生成的证书,也可以由 SQL Server 生成证书。非对称密钥包含数据库级的内部公钥和私钥,它可以用来加密和解密SQL Server数据库中的数据,它可以从外部文件或程序集中导入,也可以在SQL Server数据库中生成。它不像证书,不可以备份到文件。这意味着一旦在SQL Server中创建了它,没有非常简单的方法在其他用户数据库中重用相同的密钥。非对称密钥对于数据库加密属于高安全选项,因而需要更多的SQL Server资源。
实验总结:通过本次实验我学会了使用管理器和T-SQL语句创建Windows身份验证的SQL Server服务器登录名和SQL Server身份验证的SQL Server服务器登录名,管理器和T-SQL语句创建用户和角色,并且修改用户和角色的权限;掌握了基本的创建语句和基本的创建操作;训练了我的数据库操作的能力和使用T-SQL语句的能力;发现了自己在创建用windows身份验证的SQL Server服务器登录名时存在的一些不足之处;在今后的学习中我的T-SQL语句能力有待提高。