這可能是一個愚蠢的新手問題。我搜索了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文檔中的許多不同位置的信息呈現的。
感謝您的幫助!