GoingMyWay
GoingMyWay

Reputation: 17468

mongoDB, connection refused

Show my code

conf.set( "mongo.input.uri" , "mongodb://127.0.0.1/stackoverflow.mrtest" );
conf.set( "mongo.output.uri" , "mongodb://127.0.0.1/stackoverflow.mrtest_out2" );

the code runs without error when the host is localhost or 127.0.0.1. But when the host changed to my ip wlan0 192.168.1.102, it returned the following error

Cluster created with settings {hosts=[192.168.1.102:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
Exception in monitor thread while connecting to server 192.168.1.102:27017
com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.connection.SocketStream.open(SocketStream.java:63)
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:114)
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:127)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:50)
    at com.mongodb.connection.SocketStream.open(SocketStream.java:58)
    ... 3 more

I have open the port 27017.

sudo iptables -A INPUT -ptcp --dport 27017 -j ACCEPT

My OS is Ubuntu 14.04.

How should I fix it? Thank you!

Upvotes: 11

Views: 87832

Answers (5)

testing_22
testing_22

Reputation: 2585

If you're using Spring Boot and are following the Quick Start, make sure you put this configuration in your application.properties

spring.data.mongodb.uri=[YOUR_URI]

Upvotes: 0

Ajit A Ankalle
Ajit A Ankalle

Reputation: 75

Exception: com.mongodb.MongoSocketOpenException: Exception opening socket

Solution:

Verify whether you have started "mongo daemon" or not.

Windows Terminal: mongod.exe

Linux Termina: mongod

Upvotes: 0

dinesh kandpal
dinesh kandpal

Reputation: 775

There could be several reasons of it , which in short can be concluded as Your Application is unable to Communicate mongoDB service

1.Check your MongoDB using the same IP configured in your application.yml file, If not then configure the same used by MongoDB:

spring:
  profiles:
    active: dev
---
  spring:
    profiles: dev
    data:
      mongodb:
        host: localhost
        port: 27017

Here i assumed my mongo running on localhost, and port 27017, so i configured accordingly.

  1. Check whether your MongoDB service up and running , How to check ? Execute following command in your terminal

sudo service mongodb status

   <pre><code>
    ● mongodb.service - An object/document-oriented database
   Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2020-07-03 20:10:15 IST; 1min 54s ago
     Docs: man:mongod(1)
 Main PID: 14305 (mongod)
    Tasks: 23 (limit: 4915)
   CGroup: /system.slice/mongodb.service
           └─14305 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf</pre></code>

If Status not visible as active and running, you need to start/restart the service

sudo service mongodb restart

Upvotes: 2

Wabwire Levis
Wabwire Levis

Reputation: 127

I was able to determine that it was an issue with the bind parameter in the /etc/mongod.conf. Instead of commenting it out I set it to 0.0.0.0 to all for remote access.

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

Upvotes: 1

Onur
Onur

Reputation: 5625

By default MongoDB only binds to the loopback interface which makes it only accessible from localhost. To change that you need to edit this line in mongod.conf file;

# /etc/mongod.conf

# Listen to local interface only. Comment out to listen on all interfaces.
bind_ip = 127.0.0.1

you can change it to bind_ip = 127.0.0.1,192.168.1.102 to allow LAN and local connections or you can remove or comment out that line to allow all connections.

For more info : MongoDB – Allow remote access

Upvotes: 11

Related Questions