SQL 权限管理

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 14:34 点击:

 

-======================== 

--== 步骤一:创建登录名== 

--======================== 

USE Master 

GO 

-- 在控制面板中,创建Windows 受限用户MrTian,然后使用MrTian 用户登录Windows 

-- MrTian 不能够连接SQL Server。 

-- 切换回管理员身份登录Windows,执行以下代码。代码中Computer_Name 请替换为您的计算机名。 

EXEC sp_GrantLogin 'Computer_Name\MrTian' 

GO 

-- 现在可以用MrTian 身份登录Windows ,登录后可以用Windows 身份验证的方式连接SQL Server 服务,但是无法使用任何数据库 

-- 下面,以管理员连接SQL Server,然后创建登录 

EXEC sp_AddLogin 'Kitty', '1234' 

GO 

-- 现在可以用Kitty 作为登录名连接SQL Server服务,但是无法使用任何数据库 

 

--============================ 

--== 步骤二:创建数据库用户== 

--============================ 

-- 假设有数据库ACCPTT,其中有表Student 

-- 下面,将ACCPTT 数据库访问权限授予Kitty 和Computer_Name\MrTian 

-- 请以管理员(sa 或Windows 管理员帐户)身份连接SQL Server,然后执行: 

USE ACCPTT 

GO 

EXEC sp_GrantDBAccess 'Kitty', 'Kitty_DBUser'          

GO 

EXEC sp_GrantDBAccess 'Computer_Name\MrTian', 'MrTian_DBUser' 

GO 

-- 现在,可以使用这两个帐户展开数据库,但是仍然不能看到表 

-- 如果执行查询,将返回:拒绝了对对象'Student' (数据库'master',架构'dbo')的SELECT 权限。 

-- 注意报错信息不是找不到数据库对象,而是拒绝访问。 

 

--============================== 

--== 步骤三:为数据库用户授权== 

--============================== 

-- 请以管理员(sa 或Windows 管理员帐户)身份连接SQL Server,然后执行以下代码, 

-- 将赋予Kitty_DBUser 的对Student 表的SELECT 权限 

GRANT SELECT ON Student TO Kitty_DBUser 

GO 

GRANT SELECT ON Student TO MrTian_DBUser 

GO 

-- 现在,可以使用Kitty 登录后,使用ACCPTT 数据库,对Student 进行查询 

-- 其它权限同理。 

 

--==================================================================== 

-- 下面的代码删除刚才创建的所有权限和用户 

--==================================================================== 

-- 先撤销数据库用户的SELECT 权限 

DENY SELECT ON Student To Kitty_DBUser 

GO 

DENY SELECT ON Student To MrTian_DBUser 

GO 

-- 现在,我们撤销了Kitty 和Computer_Name\MrTian 这两个登录名在ACCPTT 数据库中对应数据库用户名(Kitty_DBUser 和MrTian_DBUser)的查询权限 

-- 即,我们回到了步骤三之前的状态 

 

-- 下面,我们再删除ACCPTT 数据库中Kitty 和Computer_Name\MrTian 这两个登录名的数据库用户名 

USE ACCPTT 

GO 

Drop Schema Kitty_DBUser -- 删除步骤二创建数据库用户时自动创建的"架构(Schema)",关于架构的概念,不在本文讨论范围之内。 

GO 

Drop User Kitty_DBUser -- 删除数据库用户 

GO 

Drop Schema MrTian_DBUser 

GO 

Drop User MrTian_DBUser 

GO 

-- 现在,Kitty 和Computer_Name\MrTian 又只能连接SQL Server,但是不能使用任何数据库了。 

-- 即,我们回到了步骤二之前的状态 

 

-- 最后,我们删除Kitty 和Computer_Name\MrTian 这两个登录名 

EXEC sp_DenyLogin 'Computer_Name\MrTian' 

GO 

EXEC sp_DropLogin 'Kitty' 

GO 

-- 全部还原   

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • sql常见面试题
      • SQL SERVER 2005性能之跟踪
      • SQL编程(一)
      • LINUX上RMAN自动备份脚本
      • sql server面试题
      • 如何将多个SQL查询统计结果一次显示出来
      • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
      • sql server 列转行
      • SQL小技巧系列 --- 行转列合并
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1