SQL 权限管理

2014-11-24 07:22:22 · 作者: · 浏览: 4

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

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

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

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

-- 全部还原