13

Capistrano タスクで MongoDB データベースを作成する目的で、MongoDB が認証をオンにして実行されているときに、MongoDB シェルを介して新しいデータベースを作成する方法を理解する必要があります。

認証をオンにすると、MongoDB シェルは最初に認証しないと何もできませんが、私の知る限り、管理データベースを使用している間に認証を行う必要があります。だから私は次のような初心者のためにそれに接続しています:

sudo -u mongodb mongo admin --eval "db.auth(username, password)"

そして、それはさらなるアクションのために私を認証しますが...その時点で、同じシェルセッションでデータベースとそのユーザーを作成する必要があります. しかし、私はできません:

sudo -u mongodb mongo admin --eval "db.auth(username, password);use new_database"

use databaseeval では使用できないためです。だから私は代わりに試しました:

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で1行でデータベースを作成しようとしています。

これを行う方法について何か提案はありますか?

4

2 に答える 2

16

db.getSiblingDB(name)を使用して新しいデータベースを参照し、新しいアカウントを追加できます。例:

mongo -u username -p password admin --eval "db.getSiblingDB('new_database').addUser('new_user', 'new_password');"

これで、-u と -p を使用してコマンド ラインから認証できるはずです。

mongo -u new_user -p new_password new_database
于 2012-07-02T05:03:29.983 に答える