SQL Server 基本权限管理[备忘]

 

在SQL Server 中,使用系统的存储过程管理登录名,主要包括:

sp_addlogin       sp_droplogin       sp_helplogins

sp_grantlogin     sp_revokelogin    sp_denylogin

需要注意的是:这些系统的 存储过程 必须master 数据库中使用。

 

以下代码实现简单的三层权限:

use S100801A
go

-- ======================= 数据库登录 =======================
--
添加登录用户(sp_addlogin '用户名','密码','默认数据库名')
exec  sp_addlogin N ' xg ' ,N ' xg123 '
--  或者
exec  sp_addlogin N ' xg ' ,N ' xg123 ' ,N ' master '

-- 移除登录用户
exec  sp_droplogin N ' xg '

-- ======================= 数据库访问 =======================

-- 添加数据库访问用户(sp_grantdbaccess '用户名','数据库名')
use  S100801A
go
exec  sp_grantDBaccess N ' xg ' ,N ' db_xg '

-- 移除数据库访问用户 
exec  sp_revokeDBaccess N ' db_xg '

-- ======================= 数据库权限 =======================

-- 授予对数据库的所有权限(sp_addRoleMember '角色','用户')
exec  sp_addRoleMember N ' db_owner ' ,N ' db_xg '
-- 只能访问自己的数据库,及guest用户的公共表      

-- 移除对数据库的所有权限(sp_dropRoleMember '角色','用户')
exec  sp_dropRoleMember N ' db_owner ' ,N ' db_xg '


/*==========================================================================
重要事项:
后续版本的 Microsoft SQL Server 中,将删除使用‘系统存储过程’实现访问权限的相关功能。
为了避免在新的开发工作中使用该功能,应着手修改实现该功能的方式。
==========================================================================*/

 

改用实现方式如下:
-- 以下示例首先创建名为‘xg’且具有密码的服务器登录名,
--
然后在数据库‘S100801A’中创建用户‘abo_xg’对应登录名‘xg’。

-- 添加登录用户
create  login xg  with  password  =   ' xg123 ' ;

-- 移除登录用户
drop  login xg;

-- 添加数据库访问用户
use  S100801A;
create   user  dbo_xg  for  login xg;
go  

-- 移除数据库访问用户
use  S100801A;
drop   user  dbo_xg;
go
 
-- 分布权限
grant   insert , select , update , delete   on  students  to   public   -- dbo_xg    
revoke   insert , select , update , delete   on  students  from   public   -- dbo_xg

--  grant all on Students to aa_0801
--
 revoke all on students  from aa_0801

使用SQL 命令分配权限时,可以通过使用 grant、deny、revoke 等命令实现。

 

你可能感兴趣的:(SQL Server 基本权限管理[备忘])