爲了在Capistrano任務中創建MongoDB數據庫,我需要弄清楚如何在MongoDB運行auth的時候通過MongoDB shell創建一個新的數據庫。如何在auth打開的情況下從命令行創建新的MongoDB?
隨着身份驗證的開啓,MongoDB shell在沒有首次驗證的情況下就無法做任何事情,但在我意識到的情況下使用數據庫時必須進行驗證。所以我一直連接到它像首發:
sudo -u mongodb mongo admin --eval "db.auth(username, password)"
這驗證了我採取進一步行動,但......在這一點上我需要創建數據庫,併爲它在同一個shell會話的用戶。我不能:
sudo -u mongodb mongo admin --eval "db.auth(username, password);use new_database"
因爲use database
不能在eval中使用。所以,我已經試過代替:
sudo -u mongodb mongo admin --eval "db.auth(username, password);db = connect('localhost:27017/new_database')"
這實際上將讓我的新的數據庫我想創建的,但如果我嘗試的一個實例:
sudo -u mongodb mongo admin --eval "db.auth(username, password);connect('localhost:27017/new_database').addUser(new_user, new_password)"
我得到一個驗證錯誤,那麼顯然使用connect()
命令忘記了我以前進行過身份驗證。
所以這就是我卡住的地方,試圖用MongoDB和管理員用戶在一行中創建一個數據庫。
有關我如何做到這一點的任何建議?
運行完美,謝謝! – rjoll
http://docs.mongodb.org/manual/reference/method/db.getSiblingDB/ – kschaper
@kschaper:謝謝,糾正了文檔鏈接(來自舊的維基鏈接)。 – Stennie