无法连接到MongoDB errno:61 连接被拒绝

96

我最近使用Homebrew安装了mongodb-2.6.0。成功安装后,我尝试使用mongo命令连接,但是出现以下错误,无法连接:

Failed to connect to 127.0.0.1:27017, reason: errno:61 Connection refused

Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed at src/mongo/shell/mongo.js:146

exception: connect failed

1
你确定mongod服务正在运行吗?你的conf文件有哪些配置选项? - ffflabs
你使用了sudo apt-get来安装吗?我听说有些人遇到了问题...建议尝试删除并通过MongoDB官网下载。 - Hassan
我使用Homebrew安装了它,但官方网站上的说明并没有提到我需要设置一个.config文件。我只是下载并运行了'mongoose'命令,结果出现了以上错误。 - Michael
检查你的日志,一般在/var/logs/mongodb目录下,如果我没记错的话。 - AlbertEngelB
我通过下载并解压文件重新安装了软件。我现在运行“mongo”,但仍然收到相同的错误信息。 - Michael
Server Fault上有一个关于“连接拒绝”(Connection Refused)的规范问题,请参见http://serverfault.com/questions/725262/what-causes-the-connection-refused-message。 - Raedwald
13个回答

280

8
这个命令出错了:"Unknown command:services"。 - ZeMoon
7
"brew services" 不再受支持:https://github.com/Homebrew/homebrew/issues/32006。 - Vitaly
7
我尝试使用sudo mongod代替mongo,它成功启动了!要访问mongo shell,我打开了一个新的shell窗口,输入mongo,它也正常工作!!您可以在此博客中找到完整的错误跟踪及解决方案。 - Ali Raza Bhayani
1
brew services 在我的 Mac OS X Yosemite 上已不被支持。 sudo mongod 启动了 mongodb,然后 mongo 命令正常工作。感谢 @Ali Raza Bhayani。 - psun
2
非常感谢您提供的解决方案!brew服务命令在我的Mac OS X Sierra上运行良好。 - Jcc.Sanabria
显示剩余2条评论

34

我遇到了完全相同的问题,这里提供一份清晰的逐步过程,以避免此错误。

步骤1 - 安装(如果您已经安装了MongoDB,请不要执行此步骤):

brew update
brew install mongodb

第二步 - 运行Mongo守护进程:

mkdir -p /data/db
sudo mongod

步骤 3 - 运行 MongoDB Shell 接口:

mongo

在这个过程中,我成功地运行了mongo命令而没有任何错误。我还详细介绍了错误跟踪及其解决方案,在这篇博客文章中


1
这也可以在MongoDB官方页面上找到参考:http://docs.mongodb.org/v2.2/tutorial/install-mongodb-on-os-x/#run-mongodb - Paulo Oliveira
这个曾经对我有用过...但后来就崩了 :/ 这个似乎解决了问题:https://dev59.com/cGUp5IYBdhLWcg3wf3ys#22623543 - danwild
这是赢得战斗却输掉战争的好方法。不要以root身份运行服务。 - Miles Erickson

22

要解决问题,您需要按照"brew install mongodb"后由brew给出的指示进行操作。

要使mongodb在登录时启动launchd:

ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents

现在加载MongoDB:

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

或者,如果您不想/不需要使用 launchctl,您可以直接运行:

mongod --config /usr/local/etc/mongod.conf

你也许只需要运行最后一个命令,但是对我来说它没有起作用,我需要运行第二个命令。为了以后方便,我也运行了第一个命令。希望这有所帮助!

编辑 Hrishi的方法使用brew services mongodb start对我很有效。我觉得他们应该在mongo文档中加入这个方法。


我使用了last命令并在浏览器中访问了localhost/27017,屏幕上显示:“看起来你正在尝试通过本地驱动程序端口的HTTP访问MongoDB。” 这似乎不正确... - Michael
Mongo现在正在运行,对吧?也就是说,您可以在shell中键入mongo,而不再收到连接被拒绝的消息了?您将不会从浏览器访问Mongo,而是希望从cli中使用它。 - Jhey
不,我在shell中输入“mongod --config /usr/local/etc/mongod.conf”后没有任何命令被执行。只是一个空白提示符。我重新安装了MongoDB,没有使用homebrew,而是从官网下载了zip文件,将可执行文件移动到了/usr/local/bin目录下,但现在我仍然收到相同的错误消息。 - Michael
是的,最后一个命令对我也卡住了。你只需要运行前两个命令就可以了。当它卡住时,只需按 ctrl + c,然后尝试运行 mongo - Jhey
嗯...还是不起作用。我会在mongoDB论坛上发帖求助。谢谢你的帮助。 - Michael

16

这对我有用。在尝试运行mongo之前,我完全忽略了启动mongod服务。谢谢! - Matt Welander

7

当我从命令行调用 mongod 时,遇到了相同的问题。

我解决了这个问题,改为从命令行调用 sudo mongod


不要以root身份运行服务。 - Miles Erickson

5

4

对于我在osx上,我需要杀掉旧的运行实例,然后重新启动才能生效。

$>ps -aef | grep mongo
502  8047     1   0 11:52AM ??         0:00.23 /usr/local/opt/mongodb/bin/mongod --config /usr/local/etc/mongod.conf 

$>sudo kill 8047

$>sudo mongod

3

我遇到了同样的错误,但是原因不同。为了防止其他人遇到同样的问题,我在这里发布解决方案。当我运行mongorestore -d foo dump/foo/时,我的Mac突然关机导致出现了这个错误。

简而言之:我通过从数据文件夹/usr/local/var/mongodb/中删除损坏的foo.ns文件以及foo.0foo.1等文件来解决了这个问题。然后我使用brew services restart mongodb重新启动mongo服务器,一切恢复正常。

详细信息:尝试通过brew或launchctl启动或重新启动mongodb服务后,我仍然不断收到错误提示。最终我运行了以下命令: mongod --dbpath /usr/local/var/mongodb 然后发现服务实际上并没有启动,并且启动序列包括以下错误: [initandlisten] bad .ns file: /usr/local/var/mongodb/foo.ns [initandlisten] User Assertion: 10079:bad .ns file length, cannot open database 我删除了坏的.ns文件和其他数据文件,下次启动服务时一切都正常了。


1
我唯一的遗憾是我只能给一个赞:所有其他答案都忽略了默认的brew配置将数据库放在/usr/local/var/mongodb中的事实! - premiumFrye
1
Mongo又崩溃了,所以我又得重新进行这个过程。幸好我给你的答案点了赞,这样我就能再次找到它 :D - premiumFrye

1

我在使用homebrew升级到mongo 3.6后遇到了这个错误。

日志/usr/local/var/log/mongodb/mongo.log显示信息shutting down with code:62。这个错误代码表示现有数据库版本过旧,无法与当前版本的mongo一起运行。

我在另一个SO问题中找到了2种解决方案:

  • 删除您的数据库文件夹(/usr/local/var/mongodb
  • 或按照升级过程进行操作

我选择了升级。在我的情况下,这意味着我必须降级到3.4,然后在mongo控制台中运行一个命令,然后再次升级。Mongo要求您逐个主要版本进行升级,因此根据您之前的版本,可能还需要其他步骤。文档会指导您。

brew switch *brew services restart命令使版本之间的切换相对轻松。


0
如果您已经安装了MongoDB,则首先尝试以超级用户身份运行mongod,我因为没有以超级用户身份运行mongod而遇到了问题。
我已经在底部粘贴了两个命令(mongod和sudo mongod)的输出结果,您也可以检查一下。
首先尝试这个。
sudo mongod

不是这个

mongod

我已经按照以下顺序在我的MAC OS X Sierra 10.12.6上安装了MongoDB。

brew update
brew install mongodb --devel
brew services start mongodb

然后创建一个目录,mongod进程将写入数据到该目录中,这是可选的,因为mongod进程默认会使用它。请参阅https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/中的有用指南。

sudo mkdir -p /data/db

最终启动了mongod进程,如下所示

sudo mongod

在我的终端上,mongod(失败)和sudo mongod(成功)命令的输出。

MacBook-Pro-2:appscheck admin$ mongod
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] MongoDB starting : pid=2698 port=27017 dbpath=/data/db 64-bit host=MacBook-Pro-2.local
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] db version v3.4.10
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] git version: 078f28920cb24de0dd479b5ea6c66c644f6326e9
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2n  7 Dec 2017
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] allocator: system
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] modules: none
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] build environment:
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten]     distarch: x86_64
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten]     target_arch: x86_64
2017-12-10T08:12:06.166+0530 I CONTROL  [initandlisten] options: {}
2017-12-10T08:12:06.166+0530 I STORAGE  [initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating
2017-12-10T08:12:06.166+0530 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2017-12-10T08:12:06.166+0530 I NETWORK  [initandlisten] shutdown: going to flush diaglog...
2017-12-10T08:12:06.167+0530 I CONTROL  [initandlisten] now exiting
2017-12-10T08:12:06.167+0530 I CONTROL  [initandlisten] shutting down with code:100


MacBook-Pro-2:appscheck admin$ sudo mongod
Password:
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] MongoDB starting : pid=2700 port=27017 dbpath=/data/db 64-bit host=MacBook-Pro-2.local
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] db version v3.4.10
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] git version: 078f28920cb24de0dd479b5ea6c66c644f6326e9
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2n  7 Dec 2017
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] allocator: system
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] modules: none
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] build environment:
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten]     distarch: x86_64
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten]     target_arch: x86_64
2017-12-10T08:12:14.084+0530 I CONTROL  [initandlisten] options: {}
2017-12-10T08:12:14.084+0530 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=7680M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] 
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] 
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] 
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
2017-12-10T08:12:14.560+0530 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
2017-12-10T08:12:14.707+0530 I INDEX    [initandlisten] build index on: admin.system.version properties: { v: 2, key: { version: 1 }, name: "incompatible_with_version_32", ns: "admin.system.version" }
2017-12-10T08:12:14.707+0530 I INDEX    [initandlisten]      building index using bulk method; build may temporarily use up to 500 megabytes of RAM
2017-12-10T08:12:14.719+0530 I INDEX    [initandlisten] build index done.  scanned 0 total records. 0 secs
2017-12-10T08:12:14.720+0530 I COMMAND  [initandlisten] setting featureCompatibilityVersion to 3.4
2017-12-10T08:12:14.720+0530 I NETWORK  [thread1] waiting for connections on port 27017

然后我打开了新的终端来开始查询MongoDB,它正常工作。

MacBook-Pro-2:appscheck admin$ mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] 
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] 
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] 
2017-12-10T08:12:14.472+0530 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
> show dbs;
admin  0.000GB
local  0.000GB
> use practice
switched to db practice
>

就是这样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接