こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

mongoDB の shell

mongoDB というソフトをダウンロードして、データーベースを作ろうと思っています。
一応ダウンロードして、インストールできたようなのですが、test というデータベースに接続できず、以下のようなメッセージが出てきます。
C:\Program Files (x86)\MongoDB\Server\3.2\bin>mongo
MongoDB shell version: 3.2.6
connecting to: test
2016-06-07T21:48:01.946-0700 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, reason: errno:10061 No connection could be made because the target machine actively refused it.
2016-06-07T21:48:01.958-0700 E QUERY [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:229:14
@(connect):1:6

exception: connect failed

インストールの途中で何か間違ったのでしょうか、それとも何か設定をする必要があるのでしょうか。詳しい方、どうか教えてください。
ちなみに、自分のコンピューターはWindows10で、CドライブにMONGODATA/DB というデータ用のフォルダーも用意してあります。

投稿日時 - 2016-06-09 11:45:56

QNo.9185009

困ってます

質問者が選んだベストアンサー

あれれ? なんだかわかりませんが、端末のメッセージが正常なものに変わってますね。

 C:\>mongo
 MongoDB shell version: 3.2.6
 connecting to: test
 Welcome to the MongoDB shell.
 For interactive help, type "help".
 For more comprehensive documentation, see
 http://docs.mongodb.org/
 Questions? Try the support group
 http://groups.google.com/group/mongodb-user
 >

最後の > で mongo shell が命令を待ってます。ちなみにこのメッセージはクライアントとサーバが初めて接続した時だけ出るもので、次からは以下のような簡単なメッセージになります。

 C:\>mongo
 MongoDB shell version: 3.2.6
 connecting to: test
 >

試しに show log でも試してみましょう。これはクライアントでサーバのログを表示させるコマンドです。今実行すると、サーバの端末と同じメッセージが表示されるはずです。

 > show log
 2016-06-12T17:41:38.788+0900 I CONTROL [initandlisten] MongoDB starting : pid=3744 port=27017
 (中略)
 connection accepted from 127.0.0.1:49717 #1 (1 connection now open)
 >

ここまでできればサーバもクライアントも正常に動いています。

投稿日時 - 2016-06-12 17:52:59

お礼

>show log と入力するとサーバーの表示と同じようなものが出てきました。
違いといえば、サーバーは表示のあとカーソルが点滅していて、クライアントのほうは>プロンプトになっているところだけです。
これでmongoDBが正常にインストールされたわけですね。
これから少しずつデータベースを構築していこうと考えています。
masa_pee さん、色々と手取り足取りで教えて頂いて、本当に有難うございました。

投稿日時 - 2016-06-13 00:46:15

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(6)

まだ原因の特定はできませんが、サーバが起動していないようにも見えます。クライアントの出力を見ると 27017 ポートで接続しようとしてますが、そのポートで動いているサーバがないという状態ではないでしょうか(netstat で 27017 ポートが確認できないことから推測)。

tasklist で確認してみましょう。まずはサーバを起動してない状態で実行します。

 C:\Users\inataya>tasklist /fi "imagename eq mongod.exe"
 情報: 指定された条件に一致するタスクは実行されていません。

ここでは該当するタスクがないのが正常です。もし、該当するタスクがあったら、質問者さんの知らないところでサーバが起動しています。

次に、サーバを起動して実行します。ここでは該当するタスクがあるのが正常です。PID は mongod を起動したときに表示されたものと同じです。

 C:\Users\inataya>tasklist /fi "imagename eq mongod.exe"
 
 イメージ名 PID セッション名 セッション# メモリ使用量
 ========================= ======== ================ =========== ============
 mongod.exe 5932 Console 1 44,356 K

ここでもタスクが表示されない場合はサーバがうまく起動してないと思われます。

最後に、簡単な質問を三つしますので補足お願いします。

1. ここまでの検証は mongod を Windows サービスとして登録してない状態です。質問者さんの環境はどうですか?
2. また、設定ファイルを編集したり、サーバ起動時に --dbpath 以外のオプションを指定したりもしてません。質問者さんのほうはどうでしょう?
3. 前回の回答で書きましたが、クライアントを起動したときにサーバのメッセージは変化しましたか?

投稿日時 - 2016-06-12 08:19:59

補足

tasklist コマンドは、サーバーを起動した場合C:\Users\Shiro>tasklist /fi "imagename eq mongod.exe"

Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
mongod.exe 608 Console 2 44,312 K
と表示されました。

3つの質問にお答えします。
1:mongod を Windows サービスとして登録する方法などはまだ知りません。
2:設定ファイルの編集はしておりませんし、サーバ起動時に --dbpath 以外のオプションを指定したりもしてません。
3:サーバーを起動して、
2016-06-11T21:38:00.029-0700 I NETWORK [initandlisten] waiting for connections on port 27017
と表示された後、別のコマンドプロンプトからクライアントを起動させると
C:\>mongo
MongoDB shell version: 3.2.6
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
>
と表示されました。
またサーバーのほうにも
2016-06-11T21:38:20.819-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:55188 #1 (1 connection now open)
という文が追加されています。
なんだかうまく起動しているようですが、これでよいのでしょうか?

投稿日時 - 2016-06-12 13:59:06

補足ありがとうございます。それでは別の確認をしましょう。MongoDB のサーバ、クライアントが起動していたらすべて終了しておきます。

まずはデフォルトのデータディレクトリで動作させてみます。デフォルトのディレクトリは C:\data\db\ です。存在しないとサーバの起動でエラーになりますから、ない場合は先に作成してください(中身は空でかまいません)。

サーバを起動します。

 C:\>mongod
 2016-06-11T13:17:19.982+0900 I CONTROL [initandlisten] MongoDB starting : pid=5768 port=27017 dbpath=C:\data\db\ 64-bit host=DESKTOP-M8I6E5F
 (中略)
 2016-06-11T13:17:20.729+0900 I NETWORK [initandlisten] waiting for connections on port 27017
 (このまま待機状態になります)

最初の行にある pid と port の値を、netstat で確認します。

 C:>netstat -nao
 
 アクティブな接続
 
  プロトコル ローカル アドレス 外部アドレス 状態 PID
  TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 896
  TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
  TCP 0.0.0.0:7680 0.0.0.0:0 LISTENING 520
  TCP 0.0.0.0:27017 0.0.0.0:0 LISTENING 4240
  …

ローカルアドレスが 0.0.0.0:27017 になっている行で、PID が先ほどの値と同じか確認してください。また、状態も LISTENING であれば正常です。この時点で、サーバの起動は問題ないと思われます。

次に、別の端末でクライアントを起動します。通常であればサーバがメッセージを出力するので、サーバを起動した端末も見ててください。

 C:\>mongo
 MongoDB shell version: 3.2.6
 connecting to: test
 > (mongo shell に入った)

接続に成功した場合、サーバからは "connection accepted from ..." というメッセージが出ます。

 2016-06-11T13:17:20.729+0900 I NETWORK [initandlisten] waiting for connections on port 27017
 (下のメッセージが追加された)
 2016-06-11T13:41:02.882+0900 I NETWORK [initandlisten] connection accepted from 127.0.0.1:50257 #1 (1 connection now open)

エラーになっても何らかのメッセージは出ると思います。どんなメッセージだったか教えてください。

もし、メッセージが出ない場合はサーバとの通信ができていない可能性があります。原因は特定できませんが、ファイアウォールなどでブロックされているのかもしれません。

ここまでのテストでうまくいったら、データディレクトリを C:\mongodata\db にして同じようにやってみてください。

投稿日時 - 2016-06-11 13:59:04

補足

>ローカルアドレスが 0.0.0.0:27017 になっている行
というのはなくて 
TCP 127.0.0.1:27015 0.0.0.0:0 LISTENING 2504
TCP 127.0.0.1:27015 7.0.0.1:49690 ESTABLISHED 2504
というんが一番近いものです。
やはりサーバーがきちんと起動してないのでしょうか。

投稿日時 - 2016-06-12 04:24:46

たびたびすみません、#1, #2 です。

サーバ、クライアントを終了させた状態で、C:\mongodata\db の mongod.lock のサイズを確認してください。自分が試したところでは、サーバを終了させると 0 バイトになります(バージョンによっては削除かな?)。

ファイルが存在し、サイズが 0 バイトでないなら、以前にサーバが異常終了したのだと思います。その場合は mongod.lock を削除し、mongod --repair を実行してみてください。

mongod --repair が終了したらサーバーを起動、クライアントからアクセスできるか結果を教えてください。

投稿日時 - 2016-06-10 19:01:25

補足

mongod.lock ファイルは0バイトでした。

投稿日時 - 2016-06-11 11:52:01

#1 です。もう一点気になることがあったので補足お願いします。mongo のあるディレクトリにパスは通してますか?関係ないように思いますが、コマンドを C:\Program Files (x86)\MongoDB\Server\3.2\bin で実行してるのがちょっと気になりました。

回答についてはもう少しお待ちください。

投稿日時 - 2016-06-10 17:53:04

補足

パスが通ってなかったので環境変数を設定しました。
それでもルートから C:¥>mongo としても やはり exception: connect falied と出てきます。

投稿日時 - 2016-06-11 11:56:47

サーバは起動してる? mongo じゃなくて mongod のほう。

投稿日時 - 2016-06-09 12:28:47

お礼

ご回答有難うございます。
サーバーはdbpathオプションを付けて実行すると次のように表示されるので起動していると思います。

C:\Program Files (x86)\MongoDB\Server\3.2\bin>mongod --dbpath C:\mongodata\db
2016-06-09T20:45:55.793-0700 I CONTROL [initandlisten] MongoDB starting : pid=6432 port=27017 dbpath=C:\mongodata\db 64-bit host=papaShiro
2016-06-09T20:45:55.797-0700 I CONTROL [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2016-06-09T20:45:55.800-0700 I CONTROL [initandlisten] db version v3.2.6
2016-06-09T20:45:55.806-0700 I CONTROL [initandlisten] git version: 05552b562c7a0b3143a729aaa0838e558dc49b25
2016-06-09T20:45:55.810-0700 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1p-fips 9 Jul 2015
2016-06-09T20:45:55.813-0700 I CONTROL [initandlisten] allocator: tcmalloc
2016-06-09T20:45:55.820-0700 I CONTROL [initandlisten] modules: none
2016-06-09T20:45:55.823-0700 I CONTROL [initandlisten] build environment:
2016-06-09T20:45:55.827-0700 I CONTROL [initandlisten] distmod: 2008plus-ssl
2016-06-09T20:45:55.831-0700 I CONTROL [initandlisten] distarch: x86_64
2016-06-09T20:45:55.833-0700 I CONTROL [initandlisten] target_arch: x86_64
2016-06-09T20:45:55.838-0700 I CONTROL [initandlisten] options: { storage: { dbPath: "C:\mongodata\db" } }
2016-06-09T20:45:55.876-0700 I - [initandlisten] Detected data files in C:\mongodata\db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2016-06-09T20:45:55.913-0700 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=2G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2016-06-09T20:45:56.719-0700 I NETWORK [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
2016-06-09T20:45:56.719-0700 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory 'C:/mongodata/db/diagnostic.data'
2016-06-09T20:45:56.772-0700 I NETWORK [initandlisten] waiting for connections on port 27017

ただし、この後のカーソルが点滅したまま接続を待っているという状況のようなので、これでいいのかどうかわかりません。
mongo を実行したときに connect failed と出るわけですから、やはりサーバーのほうもきちんと起動はしていないということなのでしょうか。

投稿日時 - 2016-06-10 12:58:01

あなたにオススメの質問