>데이터 베이스 >MySQL 튜토리얼 >Chapter2UserAuthentication,Authorization,andSecurity(6):

Chapter2UserAuthentication,Authorization,andSecurity(6):

WBOY
WBOY원래의
2016-06-07 16:01:421159검색

原文出处:http://blog.csdn.net/dba_huangzj/article/details/38867489,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349 未经作者同意,任何人不得以原创形式发布,也不得已用于商业用途,本人不负责任何法律责任。 前一篇:http://b

原文出处:http://blog.csdn.net/dba_huangzj/article/details/38867489,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349

未经作者同意,任何人不得以“原创”形式发布,也不得已用于商业用途,本人不负责任何法律责任。

前一篇:http://blog.csdn.net/dba_huangzj/article/details/38844999

前言:

在SQL Server 2005之前,只有通过添加登录到固定服务器角色,才能获取管理权限。SQL Server 2005引入了一套服务器粒度权限,允许你定义一套严密的权限给服务器级别的登录。

实现:

1. 打开登录的属性窗口,选择【安全对象】,然后可以在这里显式授予服务器权限,也可以查看当前有效的权限。

image

image

2. 如果想用T-SQL实现,可以用下面的语句:

GRANT <SERVER PERMISSION> TO <login>; 
--例子:: 
GRANT ALTER ANY LOGIN TO Fred;

注意,不能对sa和你自己进行grant/revoke/deny操作。

3. 可以使用下面语句查看已经被授予的服务器权限:

SELECT * FROM sys.server_permissions;
--例子:查看某个登录或服务器角色所拥有的服务器已授予权限:
SELECT p.class_desc, p.permission_name, p.state_desc 
FROM sys.server_permissions p 
JOIN sys.server_principals s ON  p.grantee_principal_id = 
s.principal_id 
WHERE s.name = &#39;Fred&#39;;

原理:

如果需要授予相同的权限给多个登录,考虑创建一个用户自定义服务器角色(2012引入,将在后续章节介绍)。禁用sysadmin成员的权限是无效的,因为权限检查会忽略这部分内容。

更多:

允许登录运行SQL Trace:

SQL Trace是一个服务器功能,通常使用SQL Profiler工具定义和执行,在SQL Server 2005之前,仅sysadmin服务器角色的成员才能运行Trace,从2005开始,可以使用下面语句对非sysadmin登录授权运行:

GRANT ALTER TRACE TO [Fred];

对于一些敏感信息如密码,SQL Trace会自动屏蔽,比如:

CREATE LOGIN Fred WITH PASSWORD = &#39;6eRt5(K%yTR&#39;;
--会在SQL:BatchCompleted事件中显示为:
--*CREATE LOGIN-------------------------------

除了SQL Trace,2008引入的扩展事件(Extended Events,微软希望用这个功能替代SQL Trace),也需要授予ALTER ANY EVENT SESSION权限。

这里有一个PDF文档,描述了2008R2和2012的服务器和数据库级别权限图:

http://social.technet.microsoft.com/wiki/cfs-file.ashx/__key/communityserver-wikis-components-files/00-00-00-00-05/5710.Permissions_5F00_Poster_5F00_2008_5F00_R2_5F00_Wiki.pdf

但是要提醒一下,这个是海报级别的,看起来比较费劲。

下一篇:http://blog.csdn.net/dba_huangzj/article/details/38895357

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:MySQL数据库备份(1)다음 기사:MySQL数据库备份(3)