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
-- 全部还原
相关新闻>>
- 发表评论
-
- 最新评论 更多>>