system.users Collection

在 2.6 版中进行了更改。

在本页面

admin数据库中的system.users集合存储用户authenticationauthorization信息。要 Management 此集合中的数据,MongoDB 提供了用户 Management 命令

system.users Schema

system.users集合中的文档具有以下架构:

{
  _id: <system defined id>,
  userId : <system assigned UUID>,  // Starting in MongoDB 3.6.13
  user: "<name>",
  db: "<database>",
  credentials: { <authentication credentials> },
  roles: [
           { role: "<role name>", db: "<database>" },
           ...
         ],
  customData: <custom information>,
 }

每个system.users文档都有以下字段:

  • admin.system.users. userId
    • 创建时分配给用户的用户唯一标识符。

userId适用于 MongoDB 3.6.13 中的用户(未通过 LDAPManagement)created

对于LDAP 托管用户,用户可能没有关联的userId

版本 3.6.13 中的新功能。

  • admin.system.users. user

    • 用户名。用户位于单个逻辑数据库(请参见admin.system.users.db)的上下文中,但可以通过roles数组中指定的角色访问其他数据库。
  • admin.system.users. db

    • 与用户关联的authentication database。用户的权限不一定限于此数据库。用户可以通过roles数组在其他数据库中拥有特权。
  • admin.system.users. credentials

    • 用户的身份验证信息。对于具有外部存储的身份验证凭据的用户,例如使用Kerberos或 x.509 证书进行身份验证的用户,该用户的system.users文档不包含credentials字段。
  • admin.system.users. roles

角色文档具有以下语法:

{ role: "<role name>", db: "<database>" }

角色文档具有以下字段:

使用role managementuser management命令指定角色时,如果运行该命令的数据库中存在该角色,则可以仅指定角色名称(例如"readWrite")。

  • admin.system.users. customData
    • 有关用户的可选自定义信息。

Example

在 3.0.0 版中更改。

考虑system.users集合中的以下文档:

{

  _id : "home.Kari",
  "userId" : UUID("ec1eced7-055a-4ca8-8737-60dd02c52793"),  // Available starting in MongoDB 3.6.13
  user : "Kari",
  db : "home",
  credentials : {
         "SCRAM-SHA-1" : {
                 "iterationCount" : 10000,
                 "salt" : nkHYXEZTTYmn+hrY994y1Q==",
                 "storedKey" : "wxWGN3ElQ25WbPjACeXdUmN4nNo=",
                 "serverKey" : "h7vBq5tACT/BtrIElY2QTm+pQzM="
         }
  },
  roles : [
            { role: "read", db: "home" },
            { role: "readWrite", db: "test" },
            { role: "appUser", db: "myApp" }
          ],
  customData : { zipCode: "64157" }
}

该文档显示用户Karihome数据库相关联。 Karihome数据库中具有read角色,在test数据库中具有readWrite角色,在myApp数据库中具有appUser角色。