为了在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