创建登录名

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)

本文将介绍如何使用 SQL Server Management Studio (SSMS) 或 Transact-SQL 在 SQL Server 或 Azure SQL 数据库中创建登录名。 登录名是连接 SQL Server 实例的个人或进程的标识。

注意

Microsoft Entra ID 以前称为 Azure Active Directory (Azure AD)。

背景

登录名是一个可由安全系统进行身份验证的安全主体或实体。 用户需要使用登录名连接到 SQL Server。 你可基于 Windows 主体(例如,域用户或 Windows 域组)创建登录名,或者也可创建一个并非基于 Windows 主体的登录名(例如, SQL Server 登录名)。

注意

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

Azure SQL 引入了用于对 Azure SQL 数据库、Azure SQL 托管实例和 Azure Synapse Analytics(仅限专用 SQL 池)进行身份验证的 Microsoft Entra 服务器主体(登录)

SQL Server 2022 还引入了 Microsoft Entra 身份验证

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

注意

当登录名连接到 SQL Server 时,在 master 数据库验证标识。 使用包含的数据库用户在数据库级别对 SQL Server 和 SQL 数据库连接进行身份验证。 当使用包含的数据库用户时,登录名不是必需的。 包含的数据库是独立于其他数据库以及托管数据库的 SQL Server 或 SQL 数据库实例(以及 master 数据库)的一种数据库。 SQL Server 支持包含的数据库用户进行 Windows 和 SQL Server 身份验证。 使用 SQL 数据库时,将包含的数据库用户与数据库级别防火墙规则相结合。 有关详细信息,请参阅 包含的数据库用户 - 使你的数据库可移植

权限

SQL Server 要求对服务器或者 ##MS_LoginManager## 固定服务器角色(SQL Server 2022 及更高版本)拥有 ALTER ANY LOGIN 或 ALTER LOGIN 权限。

SQL 数据库要求具有 loginmanager 角色或 ##MS_LoginManager## 固定服务器角色的成员身份

使用 SSMS 创建 SQL Server 登录名

  1. 在对象资源管理器中,展开要在其中创建新登录名的服务器实例的文件夹。

  2. 右键单击“安全性”文件夹,指向“新建”,然后选择“登录名…”

  3. 在“登录名 - 新建”对话框的“常规”页中,在“登录名”框中输入用户的名称。 或者,选择“搜索…”以打开“选择用户或组”对话框

    注意

    如果要搜索 Windows 主体,则必须允许某些端口与域控制器通信。 如果在获取搜索结果时遇到问题,请参阅 Windows 的服务概述和网络端口要求

    如果选择“搜索…”

    1. 在“选择此对象类型”下,选择“对象类型…”以打开“对象类型”对话框,并选择以下的任意或全部选项:“内置安全主体”、“组”和“用户”。 默认情况下,将选中“内置安全主体”和“用户”。 完成后,选择“确定”。

    2. 在“从此位置”下,选择“位置…”以打开“位置”对话框,并选择一个可用的服务器位置。 完成后,选择“确定”。

    3. 在“输入要选择的对象名称(示例)”下,输入你想要查找的用户或组名。 有关详细信息,请参阅 “选择用户、计算机或组”对话框

    4. 选择“高级…”以显示更多高级搜索选项。 有关详细信息,请参阅 选择“用户”、“计算机”或“组”对话框 - 高级页面

    5. 选择“确定”

  4. 若要基于 Windows 主体创建一个登录名,请选择 “Windows 身份验证”。 这是默认选项。

  5. 若要创建一个保存在 SQL Server 数据库中的登录名,请选择“SQL Server 身份验证”

    1. 在“密码”框中,输入新用户的密码。 在“确认密码”框中再次输入该密码。

    2. 在更改现有密码时,选择 “指定旧密码”,然后在 “旧密码” 框中键入旧密码。

    3. 若要强制实施有关复杂性和强制执行的密码策略选项,请选择 “强制实施密码策略”。 有关详细信息,请参阅 Password Policy。 选中 “SQL Server 身份验证” 时,这是默认选项。

    4. 若要强制实施有关过期的密码策略选项,请选中 “强制密码过期”。 必须选择“强制实施密码策略” 才能启用此复选框。 选中 “SQL Server 身份验证” 时,这是默认选项。

    5. 若要在首次使用登录名后强制用户创建新密码,请选择 “用户在下次登录时必须更改密码”。 必须选择“强制密码过期” 才能启用此复选框。 选中 “SQL Server 身份验证” 时,这是默认选项。

  6. 若要将登录名与独立的安全性证书相关联,请选择“映射到证书”,然后再从列表中选择现有证书的名称。

  7. 若要将登录名与独立的非对称密钥相关联,请选择“映射到非对称密钥”,然后再从列表中选择现有密钥的名称。

  8. 若要将登录名与安全凭据相关联,请选中“映射到凭据”复选框,然后再从列表中选择现有凭据或选择“添加”以创建新的凭据。 若要从登录名删除与某个安全凭据的映射,请从“映射的凭据”中选择该凭据,然后选择“删除”。 有关常规凭据的详细信息,请参阅凭据(数据库引擎)

  9. “默认数据库” 列表中,选择登录名的默认数据库。 此选项的默认值为 master

  10. “默认语言” 列表中,选择登录名的默认语言。

  11. 选择“确定”

其他选项

“登录名 - 新建”对话框还在四个其他页面上提供了选项:“服务器角色”、“用户映射”、“安全对象”和“状态”

服务器角色

注意

这些服务器角色不适用于 SQL 数据库。 有固定服务器级角色适用于 SQL 数据库。 有关更多信息,请参阅用于权限管理的 Azure SQL 数据库服务器角色

“服务器角色” 页将列出可分配给新登录名的所有可能的角色。 可以使用以下选项:

“bulkadmin”复选框
bulkadmin 固定服务器角色的成员可以运行 BULK INSERT 语句。

“dbcreator”复选框
dbcreator 固定服务器角色的成员可以创建、更改、删除和还原任何数据库。

“diskadmin”复选框
diskadmin 固定服务器角色的成员可以管理磁盘文件。

“processadmin”复选框
processadmin 固定服务器角色的成员可以终止在数据库引擎实例中运行的进程

“public”复选框
默认情况下,所有 SQL Server 用户、组和角色都属于 public 固定服务器角色。

“securityadmin”复选框
securityadmin 固定服务器角色的成员可以管理登录名及其属性。 他们可以 GRANT、DENY 和 REVOKE 服务器级别的权限。 他们还可以 GRANT、DENY 和 REVOKE 数据库级别的权限。 此外,他们还可以重置 SQL Server 登录名的密码。

“serveradmin”复选框
serveradmin 固定服务器角色的成员可以更改服务器范围的配置选项和关闭服务器。

“setupadmin”复选框
setupadmin 固定服务器角色成员可以添加和删除链接服务器,并可以执行某些系统存储过程。

“sysadmin”复选框
sysadmin 固定服务器角色的成员可以在数据库引擎上执行任何活动

用户映射

“用户映射” 页将列出可应用于登录名的所有可能的数据库以及这些数据库上的数据库角色成员身份。 选定的数据库将确定对登录名可用的角色成员身份。 此页还将提供以下选项:

映射到此登录名的用户
选择此登录名可以访问的数据库。 选择某个数据库时,其有效的数据库角色将会显示在“数据库角色成员身份: database_name窗格中。

地图
允许登录名访问下面列出的数据库。

Database
列出服务器上可用的数据库。

用户
指定要映射到登录名的数据库用户。 默认情况下,数据库用户名与登录名相同。

默认架构
指定用户的默认架构。 首次创建用户时,其默认架构是 dbo。 可以指定并不存在的默认架构。 对于已映射到 Windows 组、证书或非对称密钥的用户,无法为其指定默认架构。

已启用 Guest 帐户:database_name
只读属性,指示所选数据库是否已启用 Guest 帐户。 可使用 Guest 帐户的 “登录属性” 对话框的 “状态” 页来启用或禁用 Guest 帐户。

数据库角色成员身份:database_name
选择用户在指定数据库中的角色。 在每个数据库中,所有用户都是 public 角色的成员,并且不能被删除。 有关数据库角色的详细信息,请参阅 数据库级别的角色

安全对象

“安全对象” 页将列出所有可能的安全对象以及可授予登录名的针对这些安全对象的权限。 此页还将提供以下选项:

上部网格
包含一个或多个可以为其设置权限的项目。 上部网格中显示的列会根据主体或安全对象的不同而变化。

向上部网格中添加项目:

  1. 选择“搜索”。

  2. 在“添加对象”对话框中,选择以下选项之一:“特定对象…”、“特定类型的所有对象…”或“服务器server_name”。 选择“确定”

    注意

    选择“服务器server_name将会使用该服务器的所有安全对象自动填充上部网格。

  3. 如果选择“特定对象…”:

    1. 在“选择对象”对话框中的“选择这些对象类型”下,选择“对象类型…”

    2. “选择对象类型” 对话框中,选择以下的任意或全部对象类型: “端点”“登录名”“服务器”“可用组”“服务器角色”。 选择“确定”

    3. 在“输入要选择的对象名称(示例)”下,选择“浏览…”

    4. 在“查找对象”对话框中,选择在“选择对象类型” 对话框中选择的类型的任何可用对象,然后选择“确定”

    5. 在“选择对象”对话框中,选择“确定”

  4. 如果选择“特定类型的所有对象…”,则在“选择对象类型”对话框中,选择以下的任意或全部对象类型:“端点”、“登录名”、“服务器”、“可用性组”和“服务器角色”。 选择“确定”

Name
添加到网格中的每个主体或安全对象的名称。

类型
描述每个项目的类型。

“显式”选项卡
列出了上部网格中选定的安全对象的可能权限。 并非所有选项均用于任何显式权限。

权限
权限的名称。

授权者
授予该权限的主体。

授予
选中该选项可以将此权限授予该登录名。 清除该选项将撤消此权限。

具有授予权限
反映所列权限的 WITH GRANT 选项的状态。 此框是只读的。 若要应用此权限,请使用 GRANT 语句。

拒绝
选中该选项可以拒绝该登录名具有该权限。 清除该选项将撤消此权限。

Status

“状态”页将列出可对选定的 SQL Server 登录名配置的一些身份验证和授权选项。

此页还将提供以下选项:

连接到数据库引擎的权限
当使用此设置时,应将所选登录名视为可授予或拒绝授予其对安全对象的访问权限的主体。

如果选择 “授予” ,将向登录名授予 CONNECT SQL 权限。 如果选择 “拒绝” ,将拒绝向登录名授予 CONNECT SQL 权限。

登录名
当使用此设置时,应将所选登录名视为表中的记录。 对此处列出的值的更改将应用于该记录。

已禁用的登录名继续作为记录存在。 但是如果它尝试连接到 SQL Server,则登录名将不能通过身份验证。

选择此选项以启用或禁用此登录名。 此选项将 ALTER LOGIN 语句与 ENABLE 或者 DISABLE 选项配合使用。

SQL Server 身份验证
仅当所选的登录名使用 SQL Server 身份验证进行连接并且登录名已锁定时,复选框“登录名已锁定”才可用。该设置为只读。 若要解除对已锁定登录名的锁定,请执行带 UNLOCK 选项的 ALTER LOGIN

使用 T-SQL 创建使用 Windows 身份验证的登录名

  1. “对象资源管理器” 中,连接到 数据库引擎的实例。

  2. 在标准栏上,选择“新建查询” 。

  3. 将以下示例复制并粘贴到查询窗口中,然后选择“执行”。

    -- Create a login for SQL Server by specifying a server name and a Windows domain account name.
    
    CREATE LOGIN [<domainName>\<loginName>] FROM WINDOWS;
    GO
    

使用 T-SQL 创建使用 SQL Server 身份验证的登录名

  1. “对象资源管理器” 中,连接到 数据库引擎的实例。

  2. 在标准栏上,选择“新建查询” 。

  3. 将以下示例复制并粘贴到查询窗口中,然后选择“执行”。

    -- Creates the user "shcooper" for SQL Server using the security credential "RestrictedFaculty"
    -- The user login starts with the password "Baz1nga," but that password must be changed after the first login.
    
    CREATE LOGIN shcooper
       WITH PASSWORD = 'Baz1nga' MUST_CHANGE,
       CREDENTIAL = RestrictedFaculty;
    GO
    

有关详细信息,请参阅 CREATE LOGIN (Transact-SQL)

跟进:在创建登录名后采取的步骤

创建登录名后,该登录名可连接到 SQL Server,但不一定有执行任何有用工作的充分权限。 下面的列表提供了指向常见登录操作的链接。