为什么 A/D 帐户需要 SQL Server 登录?

为什么 A/D 帐户需要 SQL Server 登录?

我需要一些帮助来理解 Windows 和 SQL Server 身份验证之间的区别:

我们将 SQL Server 2008 设置为 SQL Server 和 Windows 身份验证模式。

有一个 A/D 用户 - munis - 可以登录我们的 SQL Server。该用户在 SQL Server 中还具有 Public 和 Sysadmin 角色的登录名。

还有另外一个用户 - cnorton - 无法登录 SQL Server,并且在 SQL Server 中没有本地登录。

我认为 Windows 身份验证允许 A/D(域)用户登录 SQL Server。用户 cnorton 比用户 munis 拥有更多的 A/D 权限,例如域管理员和系统管理员。

所以我的问题是 Windows 和 SQL Server 身份验证模式是否需要本地 SQL Server 登录,为什么?

答案1

不,混合模式显然不需要两者 - 它只需要其中之一。

你的错误在于认为 AD 凭据自动地允许 SQL 服务器访问;他们不允许,您仍然必须授予此访问权限。否则,Sql Server 如何知道他们有多少访问权限?

为 DOMAIN\cnorton 创建一个新的登录名,并将用户映射到一些数据库。

CREATE LOGIN 'DOMAIN\cnorton' FROM WINDOWS
GO
GRANT ALL PRIVILEGES ON YourDatabase To 'DOMAIN\cnorton'
GO

或者,您可以将此用户添加到固定数据库角色:

USE YourDatabase
GO
ALTER ROLE db_owner ADD MEMBER 'DOMAIN\cnorton'

答案2

SQL Server 是一个应用程序。Windows 身份验证和 SQL 身份验证是向 SQL Server 作为应用程序进行身份验证的两种不同方法。这两种身份验证都需要定义/创建具有一定访问权限的用户主体。这就是登录名。您可以创建任一类型的登录名,但必须创建登录名并授予其一定级别的访问权限。

答案3

您仍然需要在 SQL 服务器中为 AD 用户“cnorton”创建登录名,但不需要为他创建密码。

在 SSMS 中,选择您需要的服务器实例,然后在登录下右键单击并点击“新登录...”

在对话框中,您可以按搜索按钮,并在 AD 实例中搜索名称:搜索对话框

您可以看到,在本例中,我从 AD 实例中选择了一个测试用户。此用户将能够登录 SSMS 或根据您授予该登录的 SQL Server 权限进行连接,只需以该用户身份登录 Windows 即可。

相关内容