23

我使用 Mac Homebrew 命令安装了 MongoDB,但是当我运行时mongod

我的终端无法识别:/

如果我输入export PATH=$PATH:/usr/local/mongodb/bin然后运行mongod它会启动但很快退出

mongod --help for help and startup options
Sun Jan 20 18:59:25 [initandlisten] MongoDB starting : pid=59800 port=27017 dbpath=/data/db/ 64-bit host=Kevin-Tucks-MacBook-Pro.local
Sun Jan 20 18:59:25 [initandlisten] db version v2.0.4, pdfile version 4.5
Sun Jan 20 18:59:25 [initandlisten] git version: 329f3c47fe8136c03392c8f0e548506cb21f8ebf
Sun Jan 20 18:59:25 [initandlisten] build info: Darwin erh2.10gen.cc 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_40
Sun Jan 20 18:59:25 [initandlisten] options: {}
Sun Jan 20 18:59:25 [initandlisten] journal dir=/data/db/journal
Sun Jan 20 18:59:25 [initandlisten] recover : no journal files present, no recovery needed
Sun Jan 20 18:59:25 [initandlisten] preallocateIsFaster=true 2.38
Sun Jan 20 18:59:25 [websvr] ERROR: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:28017
Sun Jan 20 18:59:25 [websvr] ERROR:   addr already in use
Sun Jan 20 18:59:25 [initandlisten] ERROR: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:27017
Sun Jan 20 18:59:25 [initandlisten] ERROR:   addr already in use
Sun Jan 20 18:59:25 [initandlisten] now exiting
Sun Jan 20 18:59:25 dbexit: 
Sun Jan 20 18:59:25 [initandlisten] shutdown: going to close listening sockets...
Sun Jan 20 18:59:25 [initandlisten] shutdown: going to flush diaglog...
Sun Jan 20 18:59:25 [initandlisten] shutdown: going to close sockets...
Sun Jan 20 18:59:25 [initandlisten] shutdown: waiting for fs preallocator...
Sun Jan 20 18:59:25 [initandlisten] shutdown: lock for final commit...
Sun Jan 20 18:59:25 [initandlisten] shutdown: final commit...
Sun Jan 20 18:59:25 [initandlisten] shutdown: closing all files...
Sun Jan 20 18:59:25 [initandlisten] closeAllFiles() finished
Sun Jan 20 18:59:25 [initandlisten] journalCleanup...
Sun Jan 20 18:59:25 [initandlisten] removeJournalFiles
Sun Jan 20 18:59:25 [initandlisten] shutdown: removing fs lock...
Sun Jan 20 18:59:25 dbexit: really exiting now

我尝试重新启动我的 shell,但如果我尝试mongod再次运行,它会以无法识别的形式返回,并要求我重新输入export PATH=$PATH:/usr/local/mongodb/bin.

4

7 回答 7

80

Kyle:“看起来 mongo 已经在运行,或者另一个进程正在使用端口 27017”

在这种情况下,键入以下命令

ps wuax | grep mongo

你应该看到像这样的东西

User           31936   0.5 0.4 2719784 35624   ?? S     7:34pm   0:09.98 mongod
User           31945   0.0 0.0 2423368   184 s000 R+   8:24pm   0:00.00 grep mongo

现在输入 mongod 实例的 kill 命令(在本例中为 31936):

kill 31936
于 2014-10-02T00:08:50.287 回答
4

我刚刚在 osx (10.9.3)、mongod (2.6.1) 上安装了 brew 并且遇到了同样的问题。Def没有运行第二个副本。

$ lsof -i | grep 2701 

显示没有开放端口。

我发现以下内容有所帮助。

brew 写入的默认配置文件 (/usr/local/etc/mongod.conf) 包含以下行:

bind_ip = 127.0.0.1,<my-machine>.local

如果您编辑此文件并将该行更改为以下任一行:

bind_ip = 127.0.0.1
or
bind_ip = <my-machine>.local

然后使用以下命令重新启动服务,它应该按预期启动。

$ brew services restart mongodb

您可以通过在启动时在另一个窗口中跟踪日志文件来检查成功或失败

$ tail -f /usr/local/var/log/mongodb/mongo.log 

它似乎正在尝试打开此处列出的两个地址,并且它们都解析为 127.0.0.1,因此当它尝试打开第二个端口然后关闭整个端口时,我们总是会失败。

于 2014-06-02T22:56:23.850 回答
3

Sun Jan 20 18:59:25 [websvr] 错误:地址已在使用 Sun Jan 20 18:59:25 [initandlisten] 错误:listen(): bind() failed errno:48 地址已用于套接字:0.0。 0.0:27017 Sun Jan 20 18:59:25 [initandlisten] 错误:地址已在使用中

看起来 mongo 已经在运行或另一个进程正在使用端口27017

于 2013-01-20T19:11:34.010 回答
1

mongodb对于在这里登陆的任何人,通过停止已经运行的服务来解决(至少在我这边) :

brew services stop mongodb

然后运行mongod

于 2018-02-20T11:35:35.813 回答
1

这个解决方案对我有用。我正在使用 mongodb 3.2 版

我设置路径,

/usr/local/bin

我将 mongodb 数据目录设置为 /data/db 并将权限设置为我自己的帐户。mkyong 的这个教程真的很有帮助。

于 2016-01-08T16:46:06.910 回答
0

对于 mongod 不在您的 PATH 中,看起来支持的逻辑自您使用的版本以来已经调整了几次。如果您升级,该问题很可能会自动修复。

正如其他人已经说过的那样,它给出的错误表明另一个进程已经在使用配置的端口。一种可能性是,在过去,您运行 Homebrew 提供给您的命令以将 MongoDB 安装为 LaunchAgent。如果是这种情况,此命令应该撤消该操作,允许您从命令行启动它。

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

于 2013-01-20T20:37:39.993 回答
0

当您配置自动启动时,它不允许杀死,因此删除锁定文件并修复它(mac osx)。

 cd /data/db
 rm mongod.lock
 sudo mongod --repair
于 2019-01-12T15:49:52.850 回答