認証でのMongoDBを実行します
-
19-09-2019 - |
質問
私はそれが私が将来のアプリケーションかどうかのために利用したいと思いルートであるかどうかを評価するために、MongoDBのを把握しようとしています。私のサーバー上で賢明にそれを展開するためには、私は(すなわち--auth
引数を指定してか、設定ファイルのauth = true
で)有効認証でそれを実行しなければなりません。
インストールは比較的straightfowardようだと私は、必要に応じてドキュメントからの支援を進めてきました。具体的には、セキュリティ上ののセクションでは、説明するのはかなり良い仕事をしていません有効な認証を実行しているし、あなたの最初の管理者ユーザーを挿入するプロセス。しかし、物事は計画どおりに進んでいない。
なしの認証を実行すると、1がために望んでいるだろう結果が得られます - それは次のように出力して、実行します:
Thu Dec 10 21:14:24 Mongo DB : starting : pid = 9350 port = 27017 dbpath = /var/mongodb_data master = 0 slave = 0 64-bit
Thu Dec 10 21:14:24 db version v1.3.0-, pdfile version 4.5
Thu Dec 10 21:14:24 git version: 32d56f6d81a98b569103149c9ffea9f25a1ece81
Thu Dec 10 21:14:24 sys info: Darwin erh2.10gen.cc 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; root:xnu-1228.9.59~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_37
Thu Dec 10 21:14:24 waiting for connections on port 27017
ただし、(メソッド、引数または設定ディレクティブのいずれかを使用して)の認証にを実行すると、次の出力が得られ、プロセスは直ちに終了します:
Thu Dec 10 21:15:37 Mongo DB : starting : pid = 9361 port = 27017 dbpath = /var/mongodb_data master = 0 slave = 0 64-bit
Thu Dec 10 21:15:37 User Exception unauthorized
Thu Dec 10 21:15:37 local.system.namespaces Caught Assertion in runQuery ns:local.system.namespaces userassert:unauthorized
Thu Dec 10 21:15:37 ntoskip:0 ntoreturn:0
Thu Dec 10 21:15:37 query:{ name: /^local.temp./ }
Thu Dec 10 21:15:37 query local.system.namespaces ntoreturn:0 exception 0ms
Thu Dec 10 21:15:37 Dropping old temporary collection:
Thu Dec 10 21:15:37 User Exception no collection name
Thu Dec 10 21:15:37 exception in initAndListen std::exception: no collection name, terminating
Thu Dec 10 21:15:37 dbexit:
Thu Dec 10 21:15:37 shutdown: going to flush oplog...
Thu Dec 10 21:15:37 shutdown: going to close sockets...
Thu Dec 10 21:15:37 shutdown: waiting for fs...
Thu Dec 10 21:15:37 shutdown: closing all files...
Thu Dec 10 21:15:37 closeAllFiles() finished
Thu Dec 10 21:15:37 shutdown: removing fs lock...
Thu Dec 10 21:15:37 dbexit: really exiting now
ERROR: Client::shutdown not called!
タグで述べたように、、これはOS X Snow Leopardの上で実行されていて、それが最新の1.3.xの毎晩のOS X 64ビットバイナリのダウンロードを使用している(私は1.2に戻す必要があり安定したかもしれない?)
これを引き起こしていると私はそれを解決するために何ができるか任意のアイデア?それは私のローカルマシン上でそれほど重要ではありませんが、私はそれがすべてで、任意の生産使用のためにそれを実用的にするために、セキュアモードで動作する必要があります。
<時間>PS:これはServerFaultの上にあるべきかではなく、SO、それはそこに移動していて自由に感じます。私は最高のそれを適した環境わかりませんでした。
<時間>アップデート:
mdirolfとマティアスによって推奨されているように、私は、認証なしで実行しているユーザーを追加し、認証を再実行しようとしています。しかし、そのはまだ同じエラーを投げ。ユーザは、以下のように添加した。
Mark@Destiny mongodb$ sudo bin/mongo
MongoDB shell version: 1.3.0-
url: test
connecting to: test
type "help" for help
> use admin
switched to db admin
> db.addUser("Mark", "my-password-went-here")
{ "user" : "Mark", "pwd" : "9934...be15da0" }
> db.system.users.find()
{ "_id" : ObjectId("4b216ed0be8a0b185767654e"), "user" : "Mark", "pwd" : "9934a190b...babe15da0" }
> exit
bye
その後ランニング認証なしとのmongoシェルを入力するユーザーはまだ実際にあることを証明。私は愚かな何かをやっているか?
解決
ああ、見えます。私はそれのためのケースを作成しました: http://jira.mongodb.org/browse/SERVER -474 のます。
最近リリースのMongoDB 1.2.0を試してみてください。 Gitのマスター(1.3.xのブランチ)がまだのありませんを使用する準備ができています。
他のヒント
あなたはすでに--authでサーバを起動する前に、管理DB内のユーザーを持っている必要があります。私はちょうどので、誰も驚いていないこれを言及するドキュメントにメモを追加します。
ところで、ほとんどの(すべてではない)の生産MongoDBの展開は、認証なしで実行します。私たちはあなたのアプリケーションに認証を処理し、唯一のあなたのWeb /アプリケーションサーバーからの接続を許可するように、データベース・サーバー上でファイアウォールを設定することは推奨します。
あなたは--authを開始する前にユーザーを追加する必要があります。 --authなしで起動し、ユーザーを追加し、その後、--authで再起動します。
セキュリティセクションでは、これを記述するために更新されています。