Docs 菜单

Docs 主页开发应用程序MongoDB Manual

创建一个用户

在此页面上

  • MongoDB Atlas 限制
  • 先决条件
  • 步骤
  • MongoDB Atlas 配置数据库用户
  • 打开 Add New Database User 对话框。
  • 选择 Password
  • 输入用户信息。
  • 分配特权。
  • 可选:在用户可以访问的项目中指定资源。
  • 可选:保存为临时用户。
  • 单击 Add User(连接)。
  • 为自托管部署配置用户
  • 连接和身份验证
  • 为部署创建其他用户
  • 连接到此实例并以 myTester
  • 以以下用户身份插入文档: myTester
  • 其他示例
  • 用户名/密码验证
  • Kerberos 身份验证
  • LDAP 身份验证
  • x.509 客户端证书身份验证
  • 后续步骤

启用访问控制后,用户需证明自己的身份。您必须授予某一用户一个或多个角色。角色可向用户授予对 MongoDB 资源执行特定操作特权。

MongoDB 系统的每个应用程序和用户都应映射到一个唯一用户。这种访问隔离原则有利于访问撤销和持续的用户维护。为确保最小特权系统,只授予用户所需的最少特权。

此页面上的用户信息适用于在以下所有环境中托管的部署,除非另有说明:

  • MongoDB Atlas :用于在云中部署 MongoDB 的完全托管服务

以下限制仅适用于 MongoDB Atlas 中托管的部署。如果这些限制对您的组织造成问题,请联系Atlas 支持部门。

要创建用户,您需要:

对于常规用户创建,您必须拥有以下权限:

userAdminuserAdminAnyDatabase 内置角色提供对资源createUsergrantRole 动作。

要为 MongoDB Atlas 创建用户,您必须具有对 MongoDB Atlas 的组织所有者项目所有者访问权限。这些角色是 MongoDB Atlas 特有的,并且与数据库用户分开。要了解更多信息,请参阅Atlas 用户角色。

注意

以下过程使用SCRAM身份验证。有关其他身份验证机制的更多信息,请参阅其他示例。

MongoDB Atlas 项目可以让用户使用不同的身份验证方法。

创建用户后便无法更改此用户的身份验证方法。 要使用备用身份验证方法,必须创建一个新用户。

为 MongoDB Atlas 部署配置使用 SCRAM 身份验证的数据库用户:

要为自托管 MongoDB Enterprise 或 MongoDB Community 部署配置数据库用户,请执行以下步骤:

1

使用mongosh连接到主节点mongod ,或者在分片集群中连接到mongos并以用户管理员或具有所需权限的用户身份进行身份验证:

2

注意

以下步骤使用SCRAM身份验证。有关其他身份验证机制的更多信息,请参阅其他示例。

以用户管理员身份进行身份验证后,使用 db.createUser() 方法创建其他用户。您可以向用户分配任何内置角色用户定义的角色

以下操作将用户 myTester 添加到 test 数据库,该用户在 test 数据库中具有 readWrite 角色,在 reporting 数据库中具有 read 角色。

use test
db.createUser(
{
user: "myTester",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "readWrite", db: "test" },
{ role: "read", db: "reporting" } ]
}
)

提示

passwordPrompt() 方法会提示您输入密码。您也可以直接将密码指定为字符串。我们建议您使用 passwordPrompt() 方法,避免将密码显示在屏幕上,也避免可能将密码泄露到 Shell 历史记录中。

在其内创建此用户的数据库(在此示例中为 test)便是该用户的身份验证数据库。虽然此用户会通过此数据库的身份验证,但该用户还可能会在其他数据库中拥有角色。此用户的身份验证数据库不会限制该用户的特权。

创建其他用户后,退出mongosh

3

重要

无法在同一mongosh会话中切换用户。以不同用户身份进行身份验证意味着该会话拥有两个经过身份验证的用户的特权。要在用户之间切换,请退出并重新启动mongosh

myUserAdmin身份退出mongosh后,以myTester身份重新连接:

4

作为用户 myTester,您有权在 test 数据库中执行读取和写入操作(以及在 reporting 数据库中执行读取操作)。完成身份验证并认证为 myTester 后,将文档插入 test 数据库中的一个集合。例如,您可以在 test 数据库中执行以下插入操作:

db.foo.insertOne( { x: 1, y: 1 } )

提示

另请参阅:

以下操作将在 reporting 数据库中创建具有指定名称、密码和角色的用户。

提示

passwordPrompt() 方法会提示您输入密码。您也可以直接将密码指定为字符串。我们建议您使用 passwordPrompt() 方法,避免将密码显示在屏幕上,也避免可能将密码泄露到 Shell 历史记录中。

use reporting
db.createUser(
{
user: "reportsUser",
pwd: passwordPrompt(), // or cleartext password
roles: [
{ role: "read", db: "reporting" },
{ role: "read", db: "products" },
{ role: "read", db: "sales" },
{ role: "readWrite", db: "accounts" }
]
}
)

使用外部身份验证机制(例如 Kerberos)进行 MongoDB 身份验证的用户,必须在 $external 数据库中创建,这样 mongosmongod 可以咨询外部来源进行身份验证。

要对$external身份验证用户(Kerberos、LDAP 或 x.509 用户)使用客户端会话和因果一致性保证,用户名不能大于 10k 字节。

对于 Kerberos 身份验证,您必须添加 Kerberos 主体作为用户名。您不需要指定密码。

以下操作将有只读访问权限的 Kerberos 主体 reportingapp@EXAMPLE.NET 添加至 records 数据库:

use $external
db.createUser(
{
user: "reportingapp@EXAMPLE.NET",
roles: [
{ role: "read", db: "records" }
]
}
)

提示

另请参阅:

有关为 MongoDB 部署设置 Kerberos 身份验证的更多信息,请参阅以下教程:

使用外部身份验证机制(例如 LDAP)进行 MongoDB 身份验证的用户,必须在 $external 数据库中创建,这样 mongosmongod 可以咨询外部来源进行身份验证。

要对$external身份验证用户(Kerberos、LDAP 或 x.509 用户)使用客户端会话和因果一致性保证,用户名不能大于 10k 字节。

对于 LDAP 身份验证,您必须指定用户名。您无需指定密码,因为这将由 LDAP 服务处理。

以下操作会添加对 records数据库拥有只读访问权限的 reporting 用户:

use $external
db.createUser(
{
user: "reporting",
roles: [
{ role: "read", db: "records" }
]
}
)

提示

另请参阅:

有关为 MongoDB 部署设置 LDAP 身份验证的更多信息,请参阅以下教程:

要了解有关为 MongoDB Atlas 设置 LDAP 身份验证的更多信息,请参阅 MongoDB Atlas 文档中的添加数据库用户

使用外部身份验证机制(例如 x.509 客户端证书身份验证)进行 MongoDB 身份验证的用户,必须在 $external 数据库中创建,这样 mongosmongod 可以咨询外部来源进行身份验证。

要对$external身份验证用户(Kerberos、LDAP 或 x.509 用户)使用客户端会话和因果一致性保证,用户名不能大于 10k 字节。

对于 x.509 客户端证书身份验证,您必须以 MongoDB 用户身份从客户端证书中添加 subject 的值。每个唯一的 x.509 客户端证书对应一个 MongoDB 用户。您不需要指定密码。

以下操作将具有只读访问权限的客户端证书主题 CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry 用户添加至 records 数据库。

use $external
db.createUser(
{
user: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry",
roles: [
{ role: "read", db: "records" }
]
}
)

提示

另请参阅:

有关为 MongoDB 部署设置 x.509 客户端证书身份验证的更多信息,请参阅以下教程:

了解有关设置 x 的更多信息。 509 MongoDB Atlas 的客户端证书身份验证,请参阅 MongoDB Atlas 文档中的添加数据库用户

要为自托管的 MongoDB Enterprise 或 MongoDB 社区版部署用户、分配角色和创建自定义角色,请参阅管理用户和角色。

您还可以管理用户、分配角色以及为 MongoDB Atlas 部署创建自定义角色

← 用户(User)