Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

自管理部署中的用户

在此页面上

  • 用户管理
  • LDAP 托管用户
  • 身份验证数据库
  • 集中化用户数据
  • 分片集群用户
  • 分片本地用户

要对 MongoDB 中的客户端进行身份验证,必须将相应用户添加到 MongoDB。

您可以通过 db.createUser() 方法使用 mongosh 来添加用户。您创建的第一个用户必须拥有创建其他用户的权限。userAdminuserAdminAnyDatabase 角色均会赋予创建其他用户的权限。

提示

另请参阅:

创建用户时,您可以通过为用户分配角色向用户授予特权。您还可以通过更新现有用户来授予或撤销角色以及更新密码。有关用户管理方法的完整列表,请参阅用户管理。

用户由用户名和关联的身份验证数据库进行唯一标识。MongoDB 在创建用户时将该用户与唯一的 userId 相关联。

在 LDAP 服务器上创建的 LDAP 托管用户system.users 集合中没有关联文档,因此没有与之关联的 userId 字段。

添加用户时,应在特定数据库中创建该用户。在其中创建用户的数据库是该用户的身份验证数据库。

但是,用户的特权并不限于其身份验证数据库。因此,用户可以拥有跨不同数据库的特权。有关角色的更多信息,请参阅自管部署中基于角色的访问控制

用户名和身份验证数据库是该用户的唯一标识符。MongoDB 将用户与在 MongoDB 中创建的唯一 userId 相关联。但是,在 LDAP 服务器上创建的 LDAP 托管用户system.users 集合中没有关联的文档,因此没有与其关联的 userId 字段。

如果两个用户有相同名称,但在不同的数据库中被创建,则他们是两个独立的用户。如果您希望得到一个具有多个数据库权限的用户,请创建一个用户并授予其多个角色,每个角色对应一个适用数据库。

对于在 MongoDB 中创建的用户,MongoDB 会在 admin 数据库中的 system.users 集合中存储所有用户信息,包括 namepassword 和用户的 authentication database

请勿直接修改此集合。要管理用户,请使用指定的用户管理命令。

要为分片集群创建用户,请连接到 mongos 实例并添加用户。要以在 mongos 实例上创建的用户身份进行身份验证,必须通过 mongos 实例进行身份验证。

在分片集群中,MongoDB 将用户配置数据存储在配置服务器的 admin 数据库中。

某些维护操作,如 compactrs.reconfig(),需要直接连接到分片集群中的特定分片。要执行这些操作,您必须直接连接到分片并以分片本地管理用户身份进行身份验证。

要创建分片本地管理用户,请直接连接到分片的主节点并创建用户。有关如何创建分片本地用户管理员的说明,请参阅使用密钥文件身份验证部署自管理分片集群教程。

MongoDB 将分片本地用户存储在分片本身的 admin 数据库中。这些分片本地用户独立于通过 mongos 添加到分片集群的用户。分片本地用户是分片的本地用户,无法通过 mongos 访问。

从MongoDB 8.0开始,您可以使用directShardOperations角色执行需要直接对分片执行命令的分片操作。

与分片的直接连接只能用于特定分片的维护和配置。一般来说,客户端应通过以 mongos 连接到分片集群。

警告

使用directShardOperations角色运行命令可能会导致集群停止正常工作,并可能导致数据损坏。 仅将directShardOperations角色用于维护目的或在MongoDB支持的指导下使用。 执行完维护操作后,请停止使用directShardOperations角色。

后退

本地主机异常