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

cor*_*ews 168 sql sql-server sql-server-2005

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

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

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

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

Sco*_*vey 192

"Login"将主要条目授予SERVER.

"用户"将登录条目授予单个数据库.

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

上述每个对象都可以拥有自己级别的权限.请参阅以下文章以获取每个文章的说明

  • 难怪我无法找到差异.我只是在使用1个数据库.谢谢. (6认同)
  • 这个答案基本上是正确的,但据我所知,特定用户实际上可以被授予访问该特定服务器上可用的多个数据库的权限.因此,登录到用户是一对一映射,但用户到数据库是1对多映射. (3认同)

Tom*_*ing 32

同时具有这两者的一个原因是可以由数据库服务器完成身份验证,但授权可以作用于数据库.这样,如果将数据库移动到另一台服务器,则始终可以重新映射数据库服务器上的用户登录关系,但不必更改数据库.


Dav*_*ner 23

我认为Laurentiu Cristofor有一篇关于这个主题的MSDN博客文章非常好:

关于SQL Server安全性需要了解的第一件重要事情是涉及两个安全领域 - 服务器和数据库.服务器领域包含多个数据库领域.所有工作都是在某个数据库的上下文中完成的,但为了完成工作,首先需要访问服务器,然后才能访问数据库.

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

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

用户映射到登录,映射由登录和用户的SID属性表示.如果SID值相同,则登录映射到数据库中的用户.因此,根据登录类型,我们可以对用户进行分类,模仿上述登录分类; 因此,我们有SQL用户和Windows用户,后一类包括映射到Windows用户登录的用户和映射到Windows组登录的用户.

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

这是完整帖子的链接.

  • 这篇博文已被删除:( (2认同)

小智 21

简而言之,

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

用户将拥有数据库的访问权限.


ilm*_*tte 6

我认为这是一个非常有用的问题并且有很好的答案.只是从MSDN 创建一个登录页面添加我的两分钱:

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

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

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

  • 如果你在引号中的每个段落的开头放一个`>`,那么它会更清晰,所以它被格式化为引用. (3认同)
  • 这非常有用。尽管我已经正确设置了用户和登录名,但是未将系统设置为允许SQL Server登录认证。当服务器不允许他们登录时,为什么我可以创建SQL Server登录名呢! (2认同)