2014-03-27 119 views
9

我已經設置了MongoDB數據庫與只有管理權限,無法讀取或寫入訪問數據庫的admin用戶MongoDB的用戶。創建從命令行

我現在想要做的是:

  • 添加一個新的數據庫,
  • 和一個新的用戶添加到數據庫中。

和:我需要在命令行中執行此操作。所以,我想:

$ mongo admin -u admin -p admin --eval "db.addUser('dummyuser', 'dummysecret')" 

(請注意,我仍然在運行的MongoDB 2.0,我使用的db.addUser舊格式。)

這將使完美的意義,如果我還可以告訴它的數據庫這個用戶應該是。但現在我正在掙扎。如何爲此命令指定數據庫?如果我在交互式shell中,我可以運行

> use dummydb 

但是我該如何從命令行執行此操作?我第一次嘗試用;來連接兩個命令,但沒有工作:

$ mongo admin -u admin -p admin --eval "use dummydb;db.addUser('dummyuser', 'dummysecret')" 

只是給了我語法錯誤。

我該如何解決這個問題?

回答

13

use db語法是唯一在交互式shell會話中受支持。

如果你想從管理腳本更改的數據庫,你可以使用db.getSiblingDB('dbname')

因此,使用--eval您相當於命令行是:

$ mongo admin -u admin -p admin --eval "db.getSiblingDB('dummydb').addUser('dummyuser', 'dummysecret')" 

有一個在MongoDB的手動覆蓋Differences between interactive and scripted mongo的部分。這包括其他交互式shell幫助程序的等效項,如show dbsshow collections

+0

Stennie - 傳奇。謝謝,像魅力一樣工作。 – Brett

5

通過將命令

use dummydb 
db.addUser('dummyuser', 'dummysecret') 

.js文件解決了它,然後通過調用運行的MongoDB:

$ mongo admin -u admin -p admin < setupMongoDB.js 

就是這樣:-)