SocketException: Address already in use MONGODB

MongodbMacosHomebrew

Mongodb Problem Overview


i found this error when trying to run mongodb. I install it via homebrew. Please assist

Agungs-MacBook-Pro:~ agungmahaputra$ mongod
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] MongoDB starting : pid=5189 port=27017 dbpath=/data/db 64-bit host=Agungs-MacBook-Pro.local
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] db version v3.6.0
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] git version: a57d8e71e6998a2d0afde7edc11bd23e5661c915
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2n  7 Dec 2017
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] allocator: system
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] modules: none
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] build environment:
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten]     distarch: x86_64
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten]     target_arch: x86_64
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] options: {}
2017-12-26T15:31:15.911+0700 E STORAGE  [initandlisten] Failed to set up listener: SocketException: Address already in use
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] now exiting
2017-12-26T15:31:15.911+0700 I CONTROL  [initandlisten] shutting down with code:48
Agungs-MacBook-Pro:~ agungmahaputra$

Mongodb Solutions


Solution 1 - Mongodb

You can kill the previous mongod instance and start the new one.

To kill the previous mongod instance, first search for a list of tasks running on your machine by typing,

sudo lsof -iTCP -sTCP:LISTEN -n -P

Search for mongod COMMAND and its PID and type,

sudo kill <mongo_command_pid>

Now start your mongod instance by typing,

mongod

You can see MongoDB running successfully.

Solution 2 - Mongodb

You already have a process running in the port 27017 which is used by mongodb. So either you need to stop the process in that port or try with different port number.

Try mongod --port 27018

You can change the port number of your choice.

EDIT:

You can also just stop all the running instances of mongo server using sudo killall mongod as mentioned by @Dassi Orleando in the comments. And run mongod

Solution 3 - Mongodb

Summary other(@Tony Roczz, @Balasubramani M) answer to here:

Root Cause

error: Failed to set up listener: SocketException: Address already in use

means:

  • previously have run mongodb
    • probably use default port 27017

Solution

(most case) kill and restart mongod

kill mongod

two method:

  • use killall
    • killall mongod
  • kill by PID
    • find mongod PID
      • method 1: ps aux | grep mongod
        • output can see like this: limao 425 ... /usr/local/opt/mongodb-community/bin/mongod --config /usr/local/etc/mongod.conf
      • method 2: lsof -iTCP -sTCP:LISTEN -n -P
        • output can see like this: mongod 425 limao .. TCP 127.0.0.1:27017 (LISTEN)
    • kill by PID: kill -9 425
re-start mongod
  • most case: mongod
  • some special case
    • brew services start mongodb-community
      • for install community version in Mac by: brew install mongodb-community

(for some people) run with another port

  • run with another port: mongod --port 27018
    • only for those want to run multiple mongod server same time

Additional Note

which port the running mongodb is using?

 lsof -iTCP -sTCP:LISTEN -n -P
COMMAND     PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
mongod      425 limao   10u  IPv4 0xab744305e75263cf      0t0  TCP 127.0.0.1:27017 (LISTEN)

can see 27017 is current running mongodb port.

how to check / make sure mongod is running

  • check mongod status:
    • ps aux | grep mongod
      • output can see mongod service
    • brew services list
      • if installed by brew and start by brew

Solution 4 - Mongodb

if you're using mongodb version 4.*

in default settings, there should be a "db" folder "/data/db" having the necessary permission.

to check it the MongoDB service started

brew services list

if not then run

brew services start mongodb

run mongo instead of mongod

Solution 5 - Mongodb

I solved it pasting the command below into the command line in order to close mongo's server.

sudo pkill -f mongod

"sudo" (Super User Do) runs the command admin permissions, so it will ask you for your user password

Solution 6 - Mongodb

First, shutdown the running server using:

mongod --shutdown

Then run:

sudo mongod

Solution 7 - Mongodb

After running this commands below:

sudo lsof -iTCP -sTCP:LISTEN -n -P

Search for mongod COMMAND and its PID and type,

sudo kill <mongo_command_pid>

And restarting mongod, it still fails with the same error "SocketException: Address already in use MONGODB".

Server was restarted yesterday and then this happened.

Solution 8 - Mongodb

Just this single command

sudo pkill -f mongod

Solution 9 - Mongodb

Make Sure the error is of the port , if using macos catalina there is a reported issue for ~/data/db which also causes this.

Solution 10 - Mongodb

If your mongod process is already down, just remove the .sock file in /tmp:

My mongod is already down, so does not appears in:

lsof -iTCP -sTCP:LISTEN -n -P

The error was:

[root@ol7db19c1 ~]# mongod -f /etc/csrs_2.conf
about to fork child process, waiting until server is ready for connections.
forked process: 6721
ERROR: child process failed, exited with error number 48
To see additional information in this output, start without the "--fork" option.

In the log file (/var/mongodb/db/csrs2.log):

2020-07-05T16:03:59.354-0300 E  STORAGE  [initandlisten] Failed to set up listener: SocketException: Address already in use

So, find for the socket locking:

ls -ltra /tmp|grep .sock

And just remove it (do it with caution in production environment):

rm -f mongodb-26002.sock

G-luck!

Solution 11 - Mongodb

This may sound obvious but you should check if mongodb is already running. So instead of first starting the the DB by running:

sudo mongod

Try directly running:

mongo

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAgung MahaView Question on Stackoverflow
Solution 1 - MongodbBalasubramani MView Answer on Stackoverflow
Solution 2 - MongodbTony RoczzView Answer on Stackoverflow
Solution 3 - MongodbcrifanView Answer on Stackoverflow
Solution 4 - Mongodbsh6210View Answer on Stackoverflow
Solution 5 - MongodbAgustín MaríView Answer on Stackoverflow
Solution 6 - MongodbbismaView Answer on Stackoverflow
Solution 7 - MongodbjtvdwView Answer on Stackoverflow
Solution 8 - MongodbKhushwant kodechaView Answer on Stackoverflow
Solution 9 - MongodbJasmeet Singh ChhabraView Answer on Stackoverflow
Solution 10 - MongodbIlsonMarinsView Answer on Stackoverflow
Solution 11 - MongodbKaane GujiView Answer on Stackoverflow