3

シナリオ:マシンに MongoDB 2.2.3をインストール しました(Windows 64ビット)

すべての手順に従って、MongoDBサーバーで認証を実施しました。

  1. 管理データベースにユーザーを追加

    use admin
    db.addUser('me_admin', '12345');
    db.auth('me_admin','12345');
    
  2. --auth認証を有効にするオプションを使用してデータベースサーバー(mongod.exeプロセス)を実行しました

同様の質問に対するすべての回答に従いました: ユーザー名とパスワードでMongoDBを保護する方法

問題:新しいバージョン2.2.3では、認証を設定できません。同じ手順を実行した後、同じマシンでバージョン2.0.8の認証を設定できました。しかし、MongoDBのドキュメントのどこかで、「ローカルホストでの認証はバージョン2.2の前後でわずかに異なる」と述べられています。

質問:変更点は何ですか。また、新しいバージョン、つまり2.2以降で認証を実施するにはどうすればよいですか。誰かが新しいMongoDB2.2.3で同じことを進めるためのアイデアや解決策を与えることができますか?


更新:コマンドプロンプトからパラメーターを使用してmongod.exeプロセス を開始すると、2.2.3でも認証が同じように機能することを確認しました。--auth

ドキュメントauth=trueに記載されているように設定ファイルでパラメータを使用していましたが、これは機能しませんでした。

行われた調査:

  1. mongod.cfgファイルに以下の構成が含まれている場合

    logpath=c:\mongodb\log\mongo.log, auth=true, profile=2

    このlog.txtファイルには次のログが含まれています

    Mon Mar 11 15:06:35 Trying to start Windows service 'MongoDB'
    Mon Mar 11 15:06:35 Service running
    Mon Mar 11 15:06:35 [initandlisten] MongoDB starting : pid=7152 port=27017 dbpath=\data\db\ 64-bit host=AMOL-KULKARNI
    Mon Mar 11 15:06:35 [initandlisten] db version v2.2.3, pdfile version 4.5
    Mon Mar 11 15:06:35 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
    Mon Mar 11 15:06:35 [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') BOOST_LIB_VERSION=1_49
    Mon Mar 11 15:06:35 [initandlisten] options: { config: "C:\mongodb\mongod.cfg", logpath: "c:\mongodb\log\mongo.log auth=true profile=2", service: true }
    Mon Mar 11 15:06:35 [initandlisten] journal dir=/data/db/journal
    Mon Mar 11 15:06:35 [initandlisten] recover : no journal files present, no recovery needed
    Mon Mar 11 15:06:35 [initandlisten] waiting for connections on port 27017
    Mon Mar 11 15:06:35 [websvr] admin web console waiting for connections on port 28017
    
  2. コマンドプロンプトから実行するとmongod --auth、次のログが表示されます。

        Mon Mar 11 15:09:40 [initandlisten] MongoDB starting : pid=6536 port=27017 dbpath=\data\db\ 64-bit host=AMOL-KULKARNI
        Mon Mar 11 15:09:40 [initandlisten] db version v2.2.3, pdfile version 4.5
        Mon Mar 11 15:09:40 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
        Mon Mar 11 15:09:40 [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') BOOST_LIB_VERSION=1_49
        Mon Mar 11 15:09:40 [initandlisten] options: { auth: true }
        Mon Mar 11 15:09:40 [initandlisten] journal dir=/data/db/journal
        Mon Mar 11 15:09:40 [initandlisten] recover : no journal files present, no recovery needed
        Mon Mar 11 15:09:40 [initandlisten] waiting for connections on port 27017
        Mon Mar 11 15:09:40 [websvr] admin web console waiting for connections on port 28017
    

注:の変更options:

  1. options:{ config: "C:\mongodb\mongod.cfg", logpath: "c:\mongodb\log\mongo.log auth=true profile=2", service: true }//動作しません

  2. options: { auth: true }//動作します

観察するのが面白いのは、

構成ファイルから実行されたとき。

logpath=c:\mongodb\log\mongo.log, auth=true, profile=2

次のように変更されました:

logpath: "c:\mongodb\log\mongo.log auth=true profile=2", service: true

私はここに問題があることを知っています。次のようになります。

logpath: "c:\mongodb\log\mongo.log", auth=true, profile="2", service: true

したがって、問題は、auth=true構成ファイルからパラメーターを渡しmongod.exe、Windows7でサービスとしてプロセスを実行する方法です。

4

2 に答える 2

1

引用した部分で説明されているように、変更はごくわずかです。

一般に、adminデータベースのユーザーがいない場合は、ローカルホストインターフェイスを介して接続できます。バージョン2.2を実行しているシャードクラスターの場合、mongodがauthで実行されていると、adminデータベースにユーザーがいない場合でも、localhostインターフェースを介して接続しているすべてのユーザーが認証する必要があります。

基本的に2.2より前では、シャードクラスターにいる場合はローカルホストに接続でき、管理データベースにユーザーが見つからない場合は認証を強制されませんでした。つまり、シャードクラスターをセットアップする場合は、既に行っているデフォルトユーザーをセットアップするのが賢明かもしれません。

誰かが新しいMongoDB2.2.3で同じことを進めるためのアイデアや解決策を与えることができますか?

新しい認証システムはそこにあるだけで、何もする必要はありません。ただそうなるでしょう。

于 2013-03-11T08:26:31.750 に答える
0

解決策を見つけました。

MongoDBプロセス(mongod.exe)をサービスとして実行するauth=trueには、MongoDBサービス自体を登録する際に以下の点に注意する必要があります(ドキュメントには記載されていません) 。

次のコマンドでサービスを登録する必要があります。

C:\mongodb\bin\mongod.exe --config C:\mongodb\mongod.cfg --auth --install

mongod.cfgファイルにはlogpath=c:\mongodb\log\mongo.log

努力と時間が同じ問題に二度と置かれないように、皆さんと共有してください。

すべての人に幸せな探検..:-)

このタイムログには次のものが含まれていることに注意してください。

Mon Mar 11 15:58:06 Trying to start Windows service 'MongoDB'
Mon Mar 11 15:58:06 Service running
Mon Mar 11 15:58:06 [initandlisten] MongoDB starting : pid=6800 port=27017 dbpath=\data\db\ 64-bit host=AMOL-KULKARNI
Mon Mar 11 15:58:06 [initandlisten] db version v2.2.3, pdfile version 4.5
Mon Mar 11 15:58:06 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
Mon Mar 11 15:58:06 [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') BOOST_LIB_VERSION=1_49
Mon Mar 11 15:58:06 [initandlisten] options: { auth: true, config: "C:\mongodb\mongod.cfg", logpath: "c:\mongodb\log\mongo.log", service: true }
Mon Mar 11 15:58:06 [initandlisten] journal dir=/data/db/journal
Mon Mar 11 15:58:06 [initandlisten] recover : no journal files present, no recovery needed
Mon Mar 11 15:58:06 [initandlisten] waiting for connections on port 27017
Mon Mar 11 15:58:06 [websvr] admin web console waiting for connections on port 28017
于 2013-03-11T10:28:06.150 に答える