4

MongoDB については、今後のアプリケーションで採用したいルートであるかどうかを評価するために把握しようとしています。サーバーに適切にデプロイするには、認証を有効にして (つまり、--auth引数またはauth = true構成ファイルで) 実行する必要があります。

インストールは比較的簡単なようで、必要に応じてドキュメントの助けを借りて進めています。特に、セキュリティに関するセクションでは、認証を有効にして実行し、最初の管理者ユーザーを挿入するプロセスを説明しています。しかし、物事は計画通りに進んでいません。

認証なしで実行すると、期待どおりの結果が得られます-実行され、次の出力が表示されます。

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

ただし、認証を使用して (方法、arg または config ディレクティブを使用して) 実行すると、次の出力が生成され、プロセスはすぐに終了します。

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: これが SO ではなく ServerFault にある必要がある場合は、そこに移動してください。どの環境が最適かはわかりませんでした。


アップデート:

mdirolfとMathiasが推奨するように、認証なしで実行し、ユーザーを追加して認証で再実行しようとしました。ただし、それでも同じエラーが発生します。ユーザーは次の方法で追加されました。

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 シェルに入ると、ユーザーが実際にまだそこにいることが証明されます。私は愚かなことをしていますか?

4

3 に答える 3

2

--auth でサーバーを起動する前に、admin DB にユーザーが存在している必要があります。他の誰も驚かないように、これについて言及するためにドキュメントにメモを追加しました。

ちなみに、ほとんどの (すべてではないにしても) 実稼働の mongodb デプロイメントは、認証なしで実行されます。アプリケーションで認証を処理し、データベース サーバーでファイアウォールを構成して、Web/アプリ サーバーからの接続のみを許可することをお勧めします。

于 2009-12-10T21:56:37.777 に答える
1

ああ、マスターにバグを見つけたようです。ケースを作成しました:http://jira.mongodb.org/browse/SERVER-474

最近リリースされたmongodb1.2.0をお試しください。Gitマスター(1.3.xブランチ)はまだ使用する準備ができていません。

于 2009-12-10T22:38:15.867 に答える
1

--auth で開始する前に、ユーザーを追加する必要があります。--auth なしで開始してユーザーを追加し、--auth で再起動します。

これについて説明するために、セキュリティ セクションが更新されました。

于 2009-12-10T21:54:29.233 に答える