SQL 权限管理

--========================
--== 步骤一:创建登录名 ==
--========================
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
-- 全部还原


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值