码迷,mamicode.com
首页 > 数据库 > 详细

sql server 授权相关命令

时间:2019-01-29 18:14:49      阅读:361      评论:0      收藏:0      [点我收藏+]

标签:create   OLE   ...   rom   div   revoke   特定   function   span   

原文:https://blog.csdn.net/hfdgjhv/article/details/83834076 

https://www.cnblogs.com/shi-yongcui/p/7755521.html

https://www.cnblogs.com/accumulater/p/6158387.html

https://www.cnblogs.com/xwdreamer/archive/2012/06/25/2562828.html

 https://docs.microsoft.com/zh-cn/sql/t-sql/statements/grant-transact-sql?view=sql-server-2017

Grant命令:同意,授予==>授权;为主体授予安全对象的权限。

GRANT 【1】<某种权限> ON 【2】<某个对象> TO 【3】<某个用户、登录名或组> [WITH GRANT OPTION]

适用于: SQL Server(从 2008 开始)

其中:

【1】<某种权限>称为“安全对象的权限”,【2】<某个对象>称为“安全对象”,【3】<某个用户、登录名或组>称为“主体”

【1】<某种权限>是由【2】<某个对象>决定的:不同安全对象拥有不同的权限

安全对象 权限
数据库 BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE 和 CREATE VIEW
标量函数 EXECUTE 和 REFERENCES(参考文献)
表值函数 DELETE、INSERT、UPDATE、SELECT 和 REFERENCES(参考文献)
存储过程 EXECUTE
DELETE、INSERT、UPDATE、SELECT 和 REFERENCES(参考文献)
视图 DELETE、INSERT、UPDATE、SELECT 和 REFERENCES(参考文献)

 Deny命令:否认,拒绝==>禁用;为主体禁用安全对象的权限。

Deny1<某种权限> ON2<某个对象> TO3<某个用户、登录名或组> [CASCADE]

适用于: SQL Server(从 2008 开始)

其余同Grant命令。

Revoke命令:撤销,取消==>取消;从主体中取消已有安全对象的权限

Revoke1<某种权限> ON2<某个对象> From3<某个用户、登录名或组> 

适用于: SQL Server(从 2008 开始)

其余同Grant命令。

 

 实例:在Sql Server 2012上添加一个登陆用户test,使其只能查询某个数据库temp的某两张表[dbo].[T_DD_OP201],[dbo].[T_DD_OP202]

 分析:要想成功访问 SQL Server 数据库中的数据, 我们需要两个方面的授权:1.获得准许连接 SQL Server 服务器的权利;2. 获得访问特定数据库中数据的权利(select, update, delete, create table ...)。

 备注:操作时必须有管理员的权限

1.在当前数据库temp中创建数据库角色testrole

exec sp_addrole 角色名 
exec sp_addrole testrole 

2. 给数据库角色testrole分配权限,使其只能查询两张表

GRANT 权限 ON 表名 TO 角色名
GRANT SELECT ON dbo.T_DD_OP201 TO testrole
GRANT SELECT ON dbo.T_DD_OP202 TO testrole
 

3.创建登陆用户

exec sp_addlogin 登陆用户名,登陆用户密码,登陆用户默认数据库
exec sp_addlogin test,‘test123456‘,temp

这时候,test登陆帐户就可以连接到 SQL Server 服务器上了。但是此时还不能访问数据库中的对象。要使 test帐户能够在temp数据库中访问自己需要的对象, 需要在数据库temp中建立一个“数据库用户”,赋予这个“数据库用户” 某些访问权限,并且把登陆帐户test和这个“数据库用户” 映射起来

4.创建数据库用户

exec sp_adduser 登录用户名,‘数据库用户名,‘数据库角色‘【将Sql Server ‘登陆用户名‘账户添加到具有‘数据库用户名‘的账户的当前数据库中,并将‘数据库用户名‘账户添加到‘数据库角色‘中】
exec sp_adduser test,‘dbtestname,‘testrole

备注:将 SQL Server 登录名test添加到具有用户名dbtestname的当前数据库,并将数据库用户dbtestname添加到testrole数据库角色中。这样,登陆用户和数据库用户就关联起来了,当登陆用户登录后就可以访问所有与它关联的数据库用户所在的数据库中的数据。

 习惯上,“数据库用户名” 和 “登陆用户名”的名字相同,即以上语句可以改为

exec sp_adduser test,test,testrole

 

 

实例:数据库用户、角色、登录的删除操作

1.从数据库角色中删除用户

EXEC sp_droprolemember testrole, dbtestname

 备注:需有管理员的权限,并在当前数据库中执行

 2.删除当前数据库用户

EXEC sp_revokedbaccess dbtestname;

3.删除数据库角色

EXEC sp_droprole testrole

4.删除数据库登录

EXEC sp_droplogin test

 

 

实例:在执行“EXEC sp_droplogin ‘test‘”删除登陆名时发生错误:无法删除登录名 ‘***‘,因为该用户当前正处于登录状态。 (Microsoft SQL Server,错误: 15434)

1.首先执行:EXEC sp_who 查出用户进程的spid,

2.然后执行:kill spid

3.最后执行:sp_droplogin ‘用户名’

 

 

 

 

 

 

 

 

 

 

                                       

 

sql server 授权相关命令

标签:create   OLE   ...   rom   div   revoke   特定   function   span   

原文地址:https://www.cnblogs.com/luna-hehe/p/10333699.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!