如何创建将管理其数据库用户的数据库管理员

时间:2014-07-11 11:32:31

标签: mongodb administrator user-management

我使用MongoDB ver2.6.2并希望创建一个能够管理其用户的数据库管理员(添加和删除它们)。我有两个数据库 - 管理员和书籍。用户admin_books应该是dbOwner,并且能够在books数据库中创建和删除用户:

/* creating admin db */
> use admin;
switched to db admin
> db.createUser( { "user" : "admin_root", "pwd": "pass", "roles" : ["root"] } )
Successfully added user: { "user" : "admin_root", "roles" : [ "root" ] }

/* creating books db */
> use books;
switched to db books
> db.createUser( { "user" : "admin_books", "pwd": "pass", "roles" : ["dbOwner"] } )
Successfully added user: { "user" : "admin_books", "roles" : [ "dbOwner" ] }
> db.createUser( { "user" : "logger", "pwd": "pass", "roles" : ["readWrite"] } )
Successfully added user: { "user" : "logger", "roles" : [ "readWrite" ] }

我发现所有用户实际上都是从2.6版开始存储在admin db中的。 当我尝试在以admin_books登录到书籍数据库时查询数据库用户时,我收到以下错误:

> use books
switched to db books
> db.auth("admin_books", "pass")
1
> db.system.users.find()
error: { "$err" : "not authorized for query on books.system.users", "code" : 13 }

我需要添加到admin_books以允许他管理用户的任何角色和权限吗? 或者这样做的正确方法是什么?

我知道有一个类似的question,但答案建议添加一个“userAdminAnyDatabase”'即使管理员必须只管理单个数据库,也要享有用户权限。

2 个答案:

答案 0 :(得分:8)

不确定这是否得到了足够的回答,但这是你如何做到的:

db.createUser({user: "USERNAME", pwd: "PASSWORD", roles: [{role: "dbOwner", db: "DATABASE"}]});

在USERNAME,PASSWORD和DATABASE中填写您的字段。

http://docs.mongodb.org/manual/reference/method/db.createUser/

答案 1 :(得分:2)

db.system.users集合不再用于用户管理 - 它在MongoDB 2.6版中已弃用:

  

system.users权限文档

     

从2.6版开始不推荐使用:MongoDB 2.6引入了一个新的模型   用户凭据和权限,不再使用权限   文档。

http://docs.mongodb.org/manual/reference/privilege-documents/

从版本2.6开始,所有用户访问信息都存储在admin.system.users集合中:

  

system.users Collection

     

在版本2.6中更改。

     

admin数据库中的system.users集合存储用户   身份验证和授权信息。

因此,测试用户是否有权添加其他用户的方法不是查询该数据库中的system.users集合。相反,您应该以该用户身份登录并运行其中一个用户或角色管理命令:

用户管理命令

  • createUser创建新用户。

  • updateUser更新用户的数据。

  • dropUser删除单个用户。

  • dropAllUsersFromDatabase删除与a关联的所有用户 数据库中。

  • grantRolesToUser向用户授予角色及其权限。

  • revokeRolesFromUser从用户中删除角色。

  • usersInfo返回有关指定用户的信息。

角色管理命令

  • createRole创建角色并指定其权限。

  • updateRole更新用户定义的角色。

  • dropRole删除用户定义的角色。

  • dropAllRolesFromDatabase从a删除所有用户定义的角色 数据库中。

  • grantPrivilegesToRole为用户定义的角色分配权限。

  • revokePrivilegesFromRole从a中删除指定的权限 用户定义的角色。

  • grantRolesToRole指定用户定义角色的角色 继承特权。

  • revokeRolesFromRole从a中删除指定的继承角色 用户定义的角色。

  • rolesInfo返回指定角色的信息。

  • invalidateUserCache刷新用户信息的内存缓存, 包括证书和角色。

http://docs.mongodb.org/manual/reference/command/#user-management-commands