这可能是一个愚蠢的新手问题。我搜索了Google-scape的答案,并在stackoverflow上找到了一些东西,但没有任何真正的工作。MongoDB - 用户权限
我想创建一个数据库和一个用户谁可以插入到数据库的条目。
到目前为止,我设法创建以下用户&相关联的特权:
$ ./mongo localhost:29525/admin -username admin -password "somesecret"
MongoDB shell version: 2.4.9
connecting to: localhost:29525/admin
> db.system.users.find()
{ "_id" : ObjectId("533dc34753178fa1d0707308"), "user" : "admin", "pwd" : "145efb041abb3f9dd2531b26c90f2a4c", "roles" : [ "userAdminAnyDatabase" ] }
{ "_id" : ObjectId("533dc9c03eb5b535e9691f21"), "user" : "node", "pwd" : "a2cbb645cec16dedd4a4f9ee53a332a7", "roles" : [ "readWrite", "dbAdmin" ] }
{ "_id" : ObjectId("533dd1c52d0f16b6fae61188"), "user" : "node2", "pwd" : "488fba587da677d48825b425ebf7031e", "roles" : [ "userAdminAnyDatabase", "userAdmin", "clusterAdmin", "dbAdminAnyDatabase" ] }
我非常想给“admin”用户完全权限,但不幸的是管理的“userAdminAnyDatabase”特权是不够的,启用此:
> db.users.update({"admin" : "somesecret"}, {$addToSet: {'roles': [ 'dbAdminAnyDatabase', 'clusterAdmin']}}, false, false)
not authorized for update on admin.users
我想知道,如果可能我只是没有实际执行该命令以“admin”,所以我重新认证为admin用户。仍然没有喜悦:
> db.auth("admin", "somesecret")
1
> db.users.update({"admin" : "somesecret"}, {$addToSet: {'roles': [ 'dbAdminAnyDatabase', 'clusterAdmin']}}, false, false)
not authorized for update on admin.users
所以我尝试了“节点2”用户 - 我创造了与更多的权限(dbAdminAnyDatabase,clusterAdmin,..),所以也许这将工作?但可惜它也失败:
> db.auth("node2", "anothersecret")
1
> db.users.update({"admin" : "somesecret"}, {$addToSet: {'roles': [ 'dbAdminAnyDatabase', 'clusterAdmin']}}, false, false)
not authorized for update on admin.users
这且不说,我试图创建一个数据库“mynewdb”,并添加收藏“用户”。由于具有最多权限的用户是“node2”,我先切换到该用户。但是,用户不能记录插入到新的数据库的新的集合:
> db.auth("node2", "anothersecret")
1
> use mynewdb
switched to db mynewdb
> db.users.save({username: "philipp"})
not authorized for insert on testapp.users
也为此事可以“管理”。
对不起,我已经花了几个小时在这里搜索,并且仍然在拼凑拼图碎片,这些碎片是由MongoDB文档中的许多不同位置的信息呈现的。
感谢您的帮助!