MongoDB接続ポートにクライアントから接続できない問題

MongoDB接続ポートに対し、クライアントから接続できない問題が発生。 原因を検証する。

以下のリンクが参考になりそう。 blog.asial.co.jp

クライアントからpingでの接続確認

  • 以下のコマンドを実行。
$ ping 192.168.0.***
  • 以下の応答が返るので、サーバと物理的には接続されている。
PING 192.168.0.*** (192.168.0.***) 56(84) bytes of data.
64 bytes from 192.168.0.***: icmp_seq=1 ttl=64 time=94.9 ms

クライアントからtelnetでの接続確認

  • 以下のコマンドを実行。
$ telnet 192.168.0.*** 27017
  • MongoDB接続ポートに接続できない。
Trying 192.168.0.***...
telnet: connect to address 192.168.0.***: Connection refused

サーバでポートの状態を確認

  • 以下のコマンドを実行。
netstat -ant | grep 27017
  • MongoDB接続ポートはLISTENになっているが、ローカル(127.0.0.1)アクセスしか受け付けていないことが判明。
tcp        0      0 127.0.0.1:27017             0.0.0.0:*                   LISTEN

mongod.confの変更

  • 調べたところ、mongod.confを変更する必要があったことが判明。
  • mongod.confの編集。
$ sudo vi /etc/mongod.conf
  • 以下のように編集。
# Listen to local interface only. Comment out to listen on all interfaces.
#bind_ip=127.0.0.1    ←コメントアウト
  • MongoDBを再起動。
$ sudo mongod -f /etc/mongod.conf --shutdown
$ sudo mongod -f /etc/mongod.conf
  • 再度、ポートの状態を確認。
netstat -ant | grep 27017
  • MongoDB接続ポートが全てのIPアドレスに対しLISTENになっている。
tcp        0      0 0.0.0.0:27017               0.0.0.0:*                   LISTEN

MongoDB接続ポートに対しクライアントから再度接続すると、無事接続に成功。