创建数据库用户

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

本文章将介绍如何创建最常见类型的数据库用户。 有 13 种类型的用户。 文章 CREATE USER 中提供了完整列表。 所有类型的 SQL Server 都支持数据库用户,但不一定支持所有类型的用户。

可以使用 SQL Server Management Studio 或 Transact-SQL 创建数据库用户。

了解用户类型

Management Studio 提供了创建数据库用户时的 6 个选项。 下图在绿框中显示这 6 个选项,并展示选项所代表的含义。

说明不同类型用户的关系图。

选择用户类型

如果对 SQL Server 不熟悉,可能很难决定要创建哪种类型的用户。 首先问问自己,需要访问数据库的用户或组是否有登录名?

创建一个带登录名的用户

管理 SQL Server 的用户和需要访问 SQL Server 实例上的多个或者全部数据库的用户通常拥有 master 数据库中的登录名。 在这种情况下,创建一个“带登录名的 SQL 用户”。 数据库用户是其连接到数据库时登录名的标识。 数据库用户可以使用与登录名相同的名称,但这不是必需的。 本文章假设 SQL Server 中已存在登录名。 有关如何创建登录名的信息,请参阅创建登录名

创建不含登录名的用户

如果需要访问数据库的用户和组没有登录名,并且他们只需要访问一个或少数几个数据库,则创建 Windows 用户或者带密码的 SQL 用户。 这些数据库用户也称为包含的数据库用户。 包含的数据库用户与 master 数据库的登录名不相关。 当你想在 SQL Server 的实例间轻松地移动数据库时,这是一个理想的选择。 若要对 SQL Server 使用此选项,管理员必须首先对 SQL Server 启用包含的数据库,然后对包含启用数据库。 有关详细信息,请参阅使用包含的数据库实现数据库可移植

重要

作为包含的数据库用户进行连接时,必须在连接字符串中提供数据库的名称。 若要在 SQL Server Management Studio (SSMS) 中指定数据库,在“连接到”对话框中选择“选项”,然后选择“连接属性”选项卡。

当用户连接无法使用 Windows 身份验证进行身份验证时,选择“带密码的 SQL 用户”或者“带用户名的 SQL 用户”,具体取决于“SQL Server 身份验证登录名”。 组织外的用户(例如客户)连接到你的 SQL Server 这种情况很常见。

提示

对于组织内的用户,最好选择使用 Windows 身份验证。因为组织内的用户不需要记住其他密码,而且 Windows 身份验证可以提供其他安全功能,例如 Kerberos。

背景

用户是数据库级别安全主体。 登录名必须映射到数据库用户才能连接到数据库。 一个登录名可以作为不同用户映射到不同的数据库,但在每个数据库中只能作为一个用户进行映射。 在部分包含数据库中,可以创建不具有登录名的用户。 有关包含的数据库用户的详细信息,请参阅 CREATE USER。 如果在数据库中启用了 guest 用户,未映射到数据库用户的登录名可作为 guest 用户进入该数据库。

重要

guest 用户通常处于禁用状态。 除非有必要,否则不要启用来宾用户。

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

权限

需要对数据库拥有 ALTER ANY USER 权限。

使用 SSMS 创建用户

  1. 在对象资源管理器中,展开 “数据库” 文件夹。

  2. 展开要在其中创建新数据库用户的数据库。

  3. 右键单击“安全性”文件夹,指向“新建”,然后选择“用户…”

  4. 在“常规”页上的“数据库用户 - 新建”对话框中,从“用户类型”列表中选择以下一个用户类型

    • 带登录名的 SQL 用户
    • 具有密码的 SQL 用户(启用包含的数据库时)
    • 不带登录名的 SQL 用户
    • 映射到证书的用户
    • 映射到非对称密钥的用户
    • Windows 用户

    不支持 Fabric SQL 数据库中 WITH PASSWORD ,因为Microsoft数据库用户的 Entra ID 是唯一支持的身份验证方法。

  5. 选择选项时,对话框中的其他选项可能改变。 某些选项仅适用于特定类型的数据库用户。 某些选项可以留空,并且使用默认值。

    • 用户名

      输入新用户的名称。 如果你从“用户类型”列表中选择了“Windows 用户”,则还可以选择省略号 (…) 打开“选择用户或组”对话框。

    • 登录名

      输入用户的登录名。 或者,选择省略号 (…) 以打开“选择登录名”对话框。 如果您从“用户类型” 列表中选择了 “带登录名的 SQL 用户”“Windows 用户” ,则 “登录名” 可用。

    • “密码”“确认密码”

      输入在数据库中进行身份验证的用户的密码。

    • 默认语言

      输入默认的用户语言。

    • 默认架构

      输入此用户所创建的对象所属的架构。 或者,选择省略号 (…) 以打开“选择架构”对话框。 如果您从“用户类型” 列表中选择了 “带登录名的 SQL 用户”, “不带登录名的 SQL 用户”“Windows 用户” ,则 “默认架构” 可用。

    • 证书名称

      输入将用于数据库用户的证书。 或者,选择省略号 (…) 以打开“选择证书”对话框。 如果从“用户类型” 列表中选择了 “映射到证书的用户” ,则 “证书名称” 可用。

    • 非对称密钥名称

      输入将用于数据库用户的密钥。 或者,选择省略号 (…) 以打开“选择非对称密钥”对话框。 如果从“用户类型” 列表中选择了 “映射到非对称密钥的用户” ,则 “非对称密钥名称” 可用。

  6. 选择“确定”

其他选项

“数据库用户 - 新建”对话框还在四个其他页面上提供了选项:“拥有的架构”、“成员身份”、“安全对象”和“扩展属性”

  • “拥有的架构” 页列出了可由新的数据库用户拥有的所有可能的架构。 若要向数据库用户添加架构或者从数据库用户中删除架构,请在 “此用户拥有的架构”下选中或取消选中架构旁边的复选框。

  • “成员身份” 页列出了可由新的数据库用户拥有的所有可能的数据库成员身份角色。 若要向数据库用户添加角色或者从数据库用户中删除角色,请在 “数据库角色成员身份”下选中或取消选中角色旁边的复选框。

  • “安全对象” 页将列出所有可能的安全对象以及可授予登录名的针对这些安全对象的权限。

  • “扩展属性”页允许您向数据库用户添加自定义属性。 此页还提供以下选项:

    • Database

      显示所选 数据库的名称。 此字段是只读的。

    • 排序规则

      显示用于所选数据库的排序规则。 此字段是只读的。

    • 属性

      查看或指定对象的扩展属性。 每个扩展属性都由与该对象关联的元数据的名称/值对组成。

    • 省略号 (...)

      选择“值”后面的省略号 (…) 按钮可打开“已扩展属性的值”对话框。 在这一较大的范围中键入或查看扩展属性的值。 有关详细信息,请参阅 “扩展属性的值”对话框

    • 删除

      删除所选扩展属性。

使用 T-SQL 创建用户

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

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

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

    -- Creates the login AbolrousHazem with password '340$Uuxwp7Mcxo7Khy'.
    CREATE LOGIN AbolrousHazem
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
    GO
    
    -- Creates a database user for the login created previously.
    CREATE USER AbolrousHazem
    FOR LOGIN AbolrousHazem;
    GO
    

有关详细信息,请参阅 CREATE USER,其中包含更多的 Transact-SQL 示例。