Bootstrap

SQLServer 实验八安全性检查

使用订单数据库完成下面的实验内容:

(1) 分别创建登录账号user01、user02,其密码皆为p888888,并设置为订单数据库OrderDB的用户。

a) 以sa的身份登录到master 数据库中

b) 给出命令:

sp_addlogin user01,p888888

sp_addlogin user02,p888888

use OrderDB

sp_adduser user01,user01

sp_adduser user02,user02

(2) 创建登录账号login03,并加入到OrderDB数据库中,其用户名为user03。

a) 以sa的身份登录到master 数据库中

b) 给出命令:

sp_addlogin login03,p888888

use OrderDB

sp_adduser login03,user03

(3) 将员工表的所有权限授予全部用户。

以sa的身份登录

use OrderDB

grant select,delete,update,insert on Employee

to user01,user02,user03

(4) 授予user03用户对Product表的查询权限,对Employee表的编号、名称的查询和更新权限。

以sa的身份登录

use OrderDB

grant select on Product to user03

grant select,update on Employee(employeeNo,employeeName) to user03

(5) 创建角色r3、r4,将订单明细表所有列的SELECT权限、PRICE列的UPDATE权限授予r3。

以sa的身份登录

use OrderDB

sp_addrole r3

sp_addrole r4

grant select on OrderDetail to r3

grant update on OrderDetail(price) to r3

(6) 收回全部用户对员工表的所有权限。

以sa的身份登录

use OrderDB

revoke select,delete,update,insert on Employee

from user01,user02,user03

(7) 将user01、user02两个用户赋予r3角色。

以sa的身份登录

use OrderDB

sp_addrolemember r3,user01

sp_addrolemember r3,user02

(8) 收回user02对订单明细表所有列的SELECT权限。

以sa的身份登录

use OrderDB

revoke select on OrderDetail from user02

(9) 在当前数据库中删除角色r4。

以sa的身份登录

use OrderDB

sp_droprole r4

(10) 授予user01建表和建视图的权限,user01用户分别建立一张表和一个视图(表和视图自定),然后将该表和视图的查询权限授予user02和user03。

以sa的身份登录

use OrderDB

grant create table,create view to user01

以user01的身份登录

a) use OrderDB

b) CREATE TABLE EmployeeUser01 (

      employeeNo   char(8)       not null,    /*员工编号Eyyyynnn*/     

      empPassword  varchar(10)  not null,    /*登陆密码*/

      empName      varchar(20)  not null,    /*员工姓名*/

      sex          char(1)       not null                

      check(sex='男' or sex='女') ,        /*员工性别*/

      departmentNo char(3)      not null,     /*所属部门nnn*/

      postNo       char(3)      not null,     /*所属岗位nnn*/

      birthday     datetime,                      /*出生日期*/  

      salary       numeric(8,2),               /*薪水*/

      address      varchar(40),              /*员工住址*/

      telephone    varchar(15),              /*员工电话*/

      email        varchar(20),              /*员工邮箱*/

      constraint   EmployeeUser01PK primary key (employeeNo)  

)

c) create view ViewUser01 as

    select employeeNo,empName,birthday,telephone

    from EmployeeUser01

    where departmentNo like '1%'

d) grant select on EmployeeUser01 to user02,user03

   grant select on ViewUser01 to user02,user03

;