OPTIONS
翻译或纠错本页面

system.users集合

在 2.6 版更改.

管理员数据库中的system.users集合存储用户认证的相关信息。为了操作此集合中的数据,MongoDB提供了用户管理命令。

system.users模式

system.users集合中的文档具有以下模式:

{
  _id: <system defined id>,
  user: "<name>",
  db: "<database>",
  credentials: { <authentication credentials> },
  roles: [
           { role: "<role name>", db: "<database>" },
           ...
         ],
  customData: <custom information>
 }

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

admin.system.users.user

admin.system.users.user字段是一个字符串,它可以验证用户身份。一个用户可以存在于一个独立的逻辑数据库中,但可以在admin.system.users.user数组中设置身份以此来访问其他数据库。

admin.system.users.db

admin.system.users.db字段设定附属于用户的数据库。用户权限则没有必要局限于此数据库。通过设置admin.system.users.db数组用户可以拥有其他数据库的相关权限。

admin.system.users.credentials

admin.system.users.credentials字段包含了用户的认证信息。对那些拥有其他认证信息,例如有的用户使用Kerberos或者x.509证书认证,针对此类用户,system.users文档并不包含admin.system.users.credentials字段。

admin.system.users.roles

admin.system.users.roles包含了身份文档,它可以用来为用户指定身份。此数组包含了系统自带的身份以及用户自定义身份。

每个身份文档具有以下的句法:

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

每个身份文档拥有以下字段:

admin.system.users.roles[n].role

身份命名。每个身份可以是MongoDB系统提供的身份,也可以是用户自定义的身份。

admin.system.users.roles[n].db

数据库的名字和其身份同时定义。

当利用身份管理命令或者用户管理命令来制定身份的时候,如果这个身份存在于此命令运行的数据库上,你就可以单独指定此身份名,例如:readWrite。

admin.system.users.customData

admin.system.users.customData字段包含了一些关于用户的可选的设置信息。

例如

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

{
  _id: "home.Kari",
  user: "Kari",
  db: "home",
  credentials: { "MONGODB-CR" :"<hashed password>" },
  roles : [
            { role: "read", db: "home" },
            { role: "readWrite", db: "test" },
            { role: "appUser", db: "myApp" }
          ],
  customData: { zipCode: "64157" }
}

此文档显示用户Kari拥有home数据库。Kari对此数据库拥有read身份,对test数据库拥有readWrite身份以及myApp数据库的appUser身份。