我最近遇到了SQL Server的许多不同领域,我通常不会搞砸。让我困惑的其中一个是登录和用户区域。看起来它应该是一个非常简单的话题......
似乎每次登录只能有1个用户,每个用户只能登录1次。
登录可以与多个表相关联,从而将该用户与多个表相关联。
所以我的问题是为什么即使有登录和用户?他们似乎几乎是同一个人。有什么区别,或者我似乎缺少什么?
答案 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的登录名/用户图