Mongodb 如何创建管理其数据库用户的数据库管理员
我正在使用MongoDB 2.6.2版,希望创建一个能够管理其用户(添加和删除用户)的数据库管理员。我有两个数据库-管理员和书籍。用户admin_books应该是dbOwner,并且能够从books数据库中创建和删除用户:Mongodb 如何创建管理其数据库用户的数据库管理员,mongodb,administrator,user-management,Mongodb,Administrator,User Management,我正在使用MongoDB 2.6.2版,希望创建一个能够管理其用户(添加和删除用户)的数据库管理员。我有两个数据库-管理员和书籍。用户admin_books应该是dbOwner,并且能够从books数据库中创建和删除用户: /* creating admin db */ > use admin; switched to db admin > db.createUser( { "user" : "admin_root", "pwd": "pass", "roles" : ["root"
/* 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版开始,所有用户实际上都存储在管理数据库中。
当我尝试在以管理员身份登录books db时查询db用户时,我遇到以下错误:
> 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 }
我是否需要向管理员手册中添加任何角色和权限,以允许他管理用户?
或者正确的方法是什么
我知道也有类似的情况,但答案建议向用户添加“userAdminAnyDatabase”权限,即使管理员必须只管理单个数据库。db.system.users集合不再用于用户管理-它在MongoDB的2.6版中被弃用: system.users权限文档 自版本2.6以来已弃用:MongoDB 2.6为 用户凭据和权限,不再使用权限 文件 从2.6版开始,所有用户访问信息都存储在admin.system.users集合中: system.users集合 在版本2.6中更改 管理数据库中的system.users集合存储用户 身份验证和授权信息 因此,测试用户是否有权添加其他用户的方法是不查询该数据库中的system.users集合。相反,您应该以该用户的身份登录并运行以下用户或角色管理命令之一: 用户管理命令
- createUser创建一个新用户
- updateUser更新用户的数据
- dropUser删除单个用户
- dropAllUsersFromDatabase删除与数据库关联的所有用户 数据库
- GrantRoleTouser将角色及其权限授予用户
- revokeRolesFromUser从用户中删除角色
- usersInfo返回有关指定用户的信息
- createRole创建角色并指定其权限
- updateRole更新用户定义的角色
- dropRole删除用户定义的角色
- dropAllRolesFromDatabase从数据库中删除所有用户定义的角色 数据库
- GrantPrivilegestRole为用户定义的角色分配权限
- revokePrivilegesFromRole从角色中删除指定的权限 用户定义的角色
- grantRolesToRole指定用户定义角色的角色 继承特权
- revokeRolesFromRole将从中删除指定的继承角色 用户定义的角色
- RoleInfo返回指定角色的信息
- invalidateUserCache刷新用户信息的内存缓存, 包括凭证和角色
不确定这一问题是否得到了足够的正面回答,但以下是您的解决方法:
db.createUser({user: "USERNAME", pwd: "PASSWORD", roles: [{role: "dbOwner", db: "DATABASE"}]});
其中用户名、密码和数据库将由您的字段填写
Stackoverflow是一个程序员社区。但是,您的问题是数据库管理员的问题。我把这个问题推荐给了dba.stackexchange.com。再次感谢,我认为我需要学习如何彻底阅读文档不要责怪自己,在使用2.6版时所做的更改没有得到很好的解释。有些文档对system.users的引用仍然模棱两可,而它应该始终是admin.system.users。我仍然不知道如何创建对数据库具有读写访问权限的dbAdmin用户。