用户及其权限管理
1. 创建登录名Mylog及密码2. 创建用户user2关联登录名3. 创建角色role14. 对用户user2及角色role1授权5. 验证用户授权6. 收回用户权限1. 创建登录名Mylog及密码
create login Mylog with password='123456'
2. 创建用户user2关联登录名
-- 创建一个EDUC数据库用户user2,使其关联登录名Mylogcreate user user2 for login Mylog with default_schema = DBO
3. 创建角色role1
-- 创建一个EDUC数据库角色role1create role role1
4. 对用户user2及角色role1授权
1. 对角色role1进行授权
-- 将创建基本表的权限授予role1grant create table to role1-- 将查询学生表的权限授予角色role1grant select on student to role1-- 将插入选课表和修改成绩的权限授予角色role1grant insert, update(sc_grade) on select_course to role1
2. 对用户user2进行授权
-- 将角色role1授予用户user2(添加user2为角色role1的成员)exec sp_addrolemember role1,user2grant alter on schema::dbo to user2-- 将查询、插入和删除课程表的权限授予用户user2grant select,insert,delete on course to user2
5. 验证用户授权
1)选用SQL Server用户身份验证方式,以Mylog登录名重新登录。
2)将EDUC设置为当前数据库
-- 将EDUC设置为当前数据库use EDUC
3) 创建一个基本表,结构由学生自行确定,检验该用户是否具有创建基本表的权限
-- 创建一个基本表,结构由学生自行确定,检验该用户是否具有创建基本表的权限create table usr(id int primary key,name char(10))
报错原因:从开始,用户与架构分离,user2用户没有dbo架构的权限,授权时应该加
grant alter on schema::dbo to user2
4)查询学生表,检验用户是否已拥有查询学生表的权限
-- 查询学生表,检验用户是否已拥有查询学生表的权限select * from student
5)向选课表中插入一个元组,检验用户是否拥有该权限
-- 向选课表中插入一个元组,检验用户是否拥有该权限insert into select_course values(217876,80,096.5)
6)修改某学生、某门课的成绩,检验用户是否具有修改成绩的权限
-- 修改某学生、某门课的成绩,检验用户是否具有修改成绩的权限update select_course set sc_grade = 100 where sc_num = 100
(7)操作课程表,检验用户是否具有:查询、插入和删除的权限
-- 操作课程表,检验用户是否具有:查询、插入和删除的权限select * from courseinsert into course values(92,'计算机导论',3,null);drop table course
6. 收回用户权限
1、收回角色role1查询学生表的权限
以系统用户的身份重新登录
-- 收回角色role1查询学生表的权限revoke select on student from role1
2、收回用户user1删除课程表元组的权限
-- 收回用户user1删除课程表元组的权限revoke delete on course from user1
3、验证权限收回是否有效
首先重新登录,以Mylog
方式登录,然后进行验证
-- 验证权限收回是否有效select * from studentdelete from course where cs_id = 100