SocketException:地址已在使用MONGODB

Agu*_*aha 33 macos homebrew mongodb

我在尝试运行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$
Run Code Online (Sandbox Code Playgroud)

Bal*_*i M 70

您可以终止前一个mongod实例并启动新实例.

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

sudo lsof -iTCP -sTCP:LISTEN -n -P
Run Code Online (Sandbox Code Playgroud)

搜索mongod COMMAND及其PID和类型,

sudo kill <mongo_command_pid>
Run Code Online (Sandbox Code Playgroud)

现在通过输入启动你的mongod实例,

mongod
Run Code Online (Sandbox Code Playgroud)

您可以看到MongoDB成功运行.

  • 为我工作!好答案! (2认同)
  • 可能需要修改才能在 PC 上运行,但对于 mac 来说这是完美的。Tnx (2认同)
  • 太完美了,在Ubuntu上,谢谢! (2认同)

Ton*_*czz 43

你已经在端口运行的进程27017所使用的mongodb.因此,您需要在该端口中停止该进程或尝试使用不同的端口号.

尝试 mongod --port 27018

您可以更改所选的端口号.

  • 好的答案,我们实际上可以通过点击命令“sudo Killall mongod”来关闭以前的 mongo 实例。 (11认同)

cri*_*fan 9

总结其他( @Tony Roczz,@Balasubramani M ) 对这里的回答:

根本原因

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

方法:

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

解决方案

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

杀死蒙戈

两种方法:

  • 使用killall
    • killall mongod
  • 通过PID杀死
    • 找到mongod PID
      • 方法一: ps aux | grep mongod
      • 输出可以是这样的: limao 425 ... /usr/local/opt/mongodb-community/bin/mongod --config /usr/local/etc/mongod.conf
      • 方法二: 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)
Run Code Online (Sandbox Code Playgroud)

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

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

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


sh6*_*210 7

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

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

检查它 MongoDB 服务已启动

brew services list
Run Code Online (Sandbox Code Playgroud)

如果没有然后运行

brew services start mongodb
Run Code Online (Sandbox Code Playgroud)

运行mongo而不是mongod


小智 6

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

sudo pkill -f mongod
Run Code Online (Sandbox Code Playgroud)

“sudo”(超级用户 Do)运行命令管理员权限,所以它会询问你的用户密码


小智 5

首先,使用以下命令关闭正在运行的服务器:

mongod --shutdown
Run Code Online (Sandbox Code Playgroud)

然后运行:

sudo mongod
Run Code Online (Sandbox Code Playgroud)


小智 5

运行以下命令后:

sudo lsof -iTCP -sTCP:LISTEN -n -P
Run Code Online (Sandbox Code Playgroud)

搜索 mongod COMMAND 及其 PID 和类型,

sudo kill <mongo_command_pid>
Run Code Online (Sandbox Code Playgroud)

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

服务器昨天重新启动,然后发生了这种情况。