SQL server实验二


实验2

实验名称:SQL Server2005 用户管理和权限管理
实验内容:在SQL Server 中完成数据库的用户管理、角色管理和操作权限管理。
实验目的:理解和体会数据库安全的内容,加强对数据库管理系统的安全管理功能的认识。
实验方法:在SQL Server 环境下,分别以系统管理员、数据库管理员、对象拥有者的身份完成所要求的各项操作。
实验步骤及要求:
一.以系统管理员身份完成如下实验
1. 建立三个不同名称的登录用户(SQLServer身份)。(一个用户用你的名字命名,例如张三建立的登录名为zhangsan;另两个用户为zhang,wang),每个用户的默认数据库均为master
2. 尝试使用ALTER LOGIN命令对注册用户作不同的修改。(改变内容随意)
3. 将你名字的登录用户加入成为sysadmin服务器角色成员。

二.以数据库管理员身份完成如下实验(用你的名字登录)
1.将已有的注册用户zhang,wang变成当前数据库的用户(数据库可以自己定义一个,或使用我们一直用的bookdb)。
2.使用ALTER USER命令修改部分用户设置。
3.使Zhang、wang成为数据库管理预定义角色db_datareader的成员。
4.授权zhang用户具有update某表(假设为A)的权限(带WITH GRANT OPTION)。

三.以数据库用户身份完成以下实验
1.以zhang的身份登录,zhang可以对A表进行select、update操作,但无法进行insert、delete等操作;以wang的身份登录,wang只能对A表进行select操作,体会权限的作用。
2.以zhang的身份为wang的A表update操作授权,体会GRANT命令中WITH GRANT OPTION 短语的作用
3.分情况收回权限,并体会REVOKE命令中GRANT OPTION FOR 和CASCADE短语的作用

四.(选做)角色、架构管理
1.建立一个数据库角色leader,为其加入一些成员(如zhang、wang等)。
2.用grant命令为leader授权(如表A的DELETE权限等);以其成员的身份(如wang)进入系统,就可以进行leader权限能做的事(如表A的DELETE操作)。
3.创建架构(schema),修改某用户的默认架构为该架构。以该用户身份创建表,观察结果。

实验报告内容:
1.完成上述任务一、二的操作过程(SQL语句),如用图形界面,可将操作生成相应的SQL语句。
2.任务三请用拷屏实现。

相关命令:(以下为简化版命令,更全面的命令,可以通过“帮助”查看)
建立注册用户的命令:
CREATE LOGIN login_name { WITH PASSWORD=’password’ [MUST CHANGE][,DEFAULT_DATABASE=database] [,CHECK_EXPIRATION={ON|OFF}]}

修改注册用户的命令:
ALTER LOGIN login_name
    { WITH PASSWORD = 'password'
    [,OLD_PASSWORD = 'oldpassword' ]
    [,DEFAULT_DATABASE = database]
    [,NAME = login_name]}

建立数据库用户的命令:
CREATE USER user_name[LOGIN login_name]
[WITH DEFAULT_SCHEMA=schema_name ]

修改数据库用户的命令:
ALTER USER user_name  WITH[NAME=new_user_name| DEFAULT_SCHEMA=schema_name ]

建立角色命令:
CREATE ROLE role_name [AUTHORIZATION owner_name]

为角色指定成员的系统过程:
Sp_addrolemember [@rolename=] ‘role’,[@rolemember=]’user’

创建对象的授权命令:
GRANT { ALL | permission [ ,...n ] } ] TO principal [ ,...n ]
      [ WITH GRANT OPTION ] [ AS principal ]

对象操作的授权命令:
GRANT { ALL | permission [ ( column [ ,...n ] ) ] [ ,...n ]
      [ ON securable ] TO principal [ ,...n ]
      [ WITH GRANT OPTION ] [ AS principal ]

收回授权的命令:
REVOKE [ GRANT OPTION FOR ]
      {  ALL |permission [( column [ ,...n ] ) ] [ ,...n ]}
      [ ON securable ]
      {  FROM principal [ ,...n ]
      [ CASCADE] [ AS principal ]

禁止权限的命令:
DENY {  ALL |permission [( column [ ,...n ] ) ] [ ,...n ]}
      [ ON securable ]
      {  TO principal [ ,...n ]
      [ CASCADE] [ AS principal ]

Related Articles

Quote Of The Day