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身份。