SQL Server中用户和登录之间的区别

时间:2009-07-15 21:55:25

标签: sql sql-server sql-server-2005

我最近遇到了SQL Server的许多不同领域,我通常不会搞砸。让我困惑的其中一个是登录和用户区域。看起来它应该是一个非常简单的话题......

似乎每次登录只能有1个用户,每个用户只能登录1次。

登录可以与多个表相关联,从而将该用户与多个表相关联。

所以我的问题是为什么即使有登录和用户?他们似乎几乎是同一个人。有什么区别,或者我似乎缺少什么?

6 个答案:

答案 0 :(得分:186)

“Login”将主要条目授予SERVER。

“用户”将登录条目授予单个数据库。

一个“登录”可以与许多用户相关联(每个数据库一个)。

上述每个对象都可以拥有自己级别的权限。有关每个

的说明,请参阅以下文章

答案 1 :(得分:29)

使两者兼顾的一个原因是数据库服务器可以进行身份​​验证,但授权可以作用于数据库。这样,如果将数据库移动到另一台服务器,则可以始终重新映射数据库服务器上的用户登录关系,但不必更改数据库。

答案 2 :(得分:21)

简而言之,

登录将具有服务器的访问权限。

用户可以访问数据库。

答案 3 :(得分:21)

我认为Laurentiu Cristofor关于这个主题有一个非常好的MSDN blog post

  

关于SQL Server需要了解的第一件重要事情   安全性是涉及两个安全领域 - 服务器   和数据库。服务器领域包含多个数据库   境界。所有工作都是在某些数据库的上下文中完成的,但要获得   要做这项工作,首先需要先访问服务器然后再进行操作   有权访问数据库。

     

通过登录授予对服务器的访问权限。主要有两个   登录类别:SQL Server身份验证登录和Windows   经过身份验证的登录。我通常会使用较短的参考   SQL登录名和Windows登录名。 Windows身份验证登录   可以是映射到Windows用户的登录名,也可以是映射到的登录名   Windows组。因此,为了能够连接到服务器,必须有   通过这些类型或登录之一访问 - 登录提供访问   服务器领域。

     

但登录还不够,因为工作通常在数据库中完成   和数据库是独立的领域。通过授予对数据库的访问权限   用户。

     

用户映射到登录,映射由SID表示   登录和用户的属性。登录映射到数据库中的用户if   他们的SID值是相同的。根据登录类型,我们可以   因此,具有模仿上述内容的用户分类   登录分类;所以,我们有SQL用户和Windows用户   后一类包括映射到Windows用户登录的用户   以及映射到Windows组登录的用户。

     

让我们退后一步,快速浏览一下:登录提供访问权限   到服务器并进一步访问数据库,用户映射   登录的必须存在于数据库中。

that's the link到完整的帖子。

答案 4 :(得分:5)

我认为这是一个非常有用的问题并且答案很好。只是从MSDN Create a Login页面添加我的两分钱:

  

登录是安全主体,或者是可以由安全系统进行身份验证的实体。用户需要登录才能连接到SQL Server。您可以基于Windows主体(例如域用户或Windows域组)创建登录,也可以创建不基于Windows主体的登录(例如SQL Server登录)。

     

注意:
  要使用SQL Server身份验证,数据库引擎必须使用混合模式身份验证。有关详细信息,请参阅选择身份验证模式。

     

作为安全主体,可以为登录授予权限。登录的范围是整个数据库引擎。要连接到SQL Server实例上的特定数据库,必须将登录映射到数据库用户。数据库内的权限被授予和拒绝数据库用户,而不是登录。具有整个SQL Server实例范围的权限(例如,CREATE ENDPOINT权限)可以授予登录。

答案 5 :(得分:0)

来自MS sql-docs的登录名/用户图

enter image description here