SocketException:地址已在使用MONGODB

时间:2017-12-26 08:35:37

标签: mongodb macos homebrew

我在尝试运行mongodb时发现此错误。我通过自制软件安装它。请协助

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$

11 个答案:

答案 0 :(得分:36)

您可以杀死之前的 mongod 实例并启动新实例。

要杀死之前的mongod实例,首先要通过键入来搜索计算机上运行的任务列表,

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

搜索mongod 命令及其 PID 并输入

sudo kill <mongo_command_pid>

现在输入

启动你的mongod实例
mongod

您可以看到MongoDB成功运行。

答案 1 :(得分:23)

您已在27017使用的端口mongodb中运行了一个进程。因此,您需要在该端口中停止该进程或尝试使用不同的端口号。

尝试mongod --port 27018

您可以更改您选择的端口号。

答案 2 :(得分:6)

总结其他(@Tony Roczz@Balasubramani M)的答案:

根本原因

错误:Failed to set up listener: SocketException: Address already in use

表示:

  • 以前已经运行过mongodb
    • 可能使用默认端口27017

解决方案

(大多数情况下)杀死并重启mongod

杀死蒙哥

两种方法:

  • 使用killall
    • killall mongod
  • 通过PID杀死
    • 查找mongod PID
      • 方法1:ps aux | grep mongod
      • 输出看起来像这样:limao 425 ... /usr/local/opt/mongodb-community/bin/mongod --config /usr/local/etc/mongod.conf
      • 方法2:lsof -iTCP -sTCP:LISTEN -n -P
      • 输出看起来像这样:mongod 425 limao .. TCP 127.0.0.1:27017 (LISTEN)
    • 按PID杀死:kill -9 425

重新启动mongod

  • 大多数情况:mongod
  • 一些特殊情况
    • brew services start mongodb-community
      • 在Mac中通过以下方式安装社区版本:brew install mongodb-community

(对于某些人)与另一个端口一起运行

  • 使用其他端口运行:mongod --port 27018
    • 用于那些希望同时运行多个mongod服务器的人

附加说明

正在运行的mongodb使用哪个端口?

 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)

可以看到27017是当前正在运行的mongodb端口。

如何检查/确保mongod正在运行

  • 检查mongod状态:
    • ps aux | grep mongod
      • 输出可以看到mongod服务
    • brew services list
      • 如果由brew安装并由brew开始

答案 3 :(得分:4)

在下面运行此命令后:

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

搜索mongod COMMAND及其PID和类型,

sudo kill <mongo_command_pid>

然后重新启动mongod,它仍然失败,并显示相同的错误“ SocketException:地址已在使用MONGODB”。

服务器昨天重新启动,然后发生了

答案 4 :(得分:3)

如果您使用的是mongodb版本4. *

在默认设置下,应该有一个具有必要权限的“ db”文件夹“ / data / db”。

检查是否启动了MongoDB服务

brew services list

如果没有,则运行

brew services start mongodb

运行 mongo 而不是 mongod

答案 5 :(得分:1)

请确保错误在于端口,如果使用macos catalina,则报告有〜/ data / db问题,这也可能导致此错误。

答案 6 :(得分:1)

如果mongod进程已关闭,只需删除/ tmp中的.sock文件:

我的mongod已经倒下,因此不会出现在

lsof -iTCP -sTCP:LISTEN -n -P

错误是:

[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.

在日志文件(/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

因此,找到套接字锁定:

ls -ltra /tmp|grep .sock

然后将其删除(在生产环境中请谨慎操作):

rm -f mongodb-26002.sock

祝你好运!

答案 7 :(得分:0)

首先,您必须通过以下方式关闭正在运行的服务器

  

mongod --shutdown

然后运行

  

sudo mongod

它将在inshaAllah中工作

答案 8 :(得分:0)

我解决了此问题,将下面的命令粘贴到命令行中以关闭mongo的服务器。

sudo pkill -f mongod

“ sudo”(超级用户身份)运行命令admin权限,因此它将要求您输入用户密码

答案 9 :(得分:0)

只需这一个命令

sudo pkill -f mongod

答案 10 :(得分:0)

这听起来似乎很明显,但是您应该检查mongodb是否已在运行。 因此,与其先运行以下命令来启动数据库:

sudo mongod

尝试直接运行:

mongo