无法连接到服务器127.0.0.1:27017


160

我收到以下错误:

alex@alex-K43U:/$ mongo
MongoDB shell version: 2.2.0
connecting to: test
Thu Oct 11 11:46:53 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed
alex@alex-K43U:/$ 

这是我尝试启动mongodb时发生的情况:

* Starting database mongodb                                             [fail]

我已经试过了 mongo --repair

我将chown和chmod设置为var,lib和data / db并记录了 mongodb。

不知道该怎么办。有什么建议?

mongodb.log:

***** SERVER RESTARTED *****


Thu Oct 11 08:29:40 
Thu Oct 11 08:29:40 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
Thu Oct 11 08:29:40 
Thu Oct 11 08:29:41 [initandlisten] MongoDB starting : pid=1052 port=27017 dbpath=/var/lib/mongodb 32-bit host=alex-K43U
Thu Oct 11 08:29:41 [initandlisten] 
Thu Oct 11 08:29:41 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Thu Oct 11 08:29:41 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Thu Oct 11 08:29:41 [initandlisten] **       with --journal, the limit is lower
Thu Oct 11 08:29:41 [initandlisten] 
Thu Oct 11 08:29:41 [initandlisten] db version v2.2.0, pdfile version 4.5
Thu Oct 11 08:29:41 [initandlisten] git version: f5e83eae9cfbec7fb7a071321928f00d1b0c5207
Thu Oct 11 08:29:41 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_49
Thu Oct 11 08:29:41 [initandlisten] options: { config: "/etc/mongodb.conf", dbpath: "/var/lib/mongodb", logappend: "true", logpath: "/var/log/mongodb/mongodb.log" }
Thu Oct 11 08:29:41 [initandlisten] Unable to check for journal files due to: boost::filesystem::basic_directory_iterator constructor: No such file or directory: "/var/lib/mongodb/journal"
************** 
Unclean shutdown detected.
Please visit http://dochub.mongodb.org/core/repair for recovery instructions.
*************
Thu Oct 11 08:29:41 [initandlisten] exception in initAndListen: 12596 old lock file, terminating
Thu Oct 11 08:29:41 dbexit: 
Thu Oct 11 08:29:41 [initandlisten] shutdown: going to close listening sockets...
Thu Oct 11 08:29:41 [initandlisten] shutdown: going to flush diaglog...
Thu Oct 11 08:29:41 [initandlisten] shutdown: going to close sockets...
Thu Oct 11 08:29:41 [initandlisten] shutdown: waiting for fs preallocator...
Thu Oct 11 08:29:41 [initandlisten] shutdown: closing all files...
Thu Oct 11 08:29:41 [initandlisten] closeAllFiles() finished
Thu Oct 11 08:29:41 dbexit: really exiting now

编辑:

我卸下了锁,然后进行了mongod修复,并得到了以下错误:

Thu Oct 11 12:05:37 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating

所以我用sudo做到了:

alex@alex-K43U:~$ sudo mongod --repair
Thu Oct 11 12:05:42 
Thu Oct 11 12:05:42 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
Thu Oct 11 12:05:42 
Thu Oct 11 12:05:42 [initandlisten] MongoDB starting : pid=5129 port=27017 dbpath=/data/db/ 32-bit host=alex-K43U
Thu Oct 11 12:05:42 [initandlisten] 
Thu Oct 11 12:05:42 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Thu Oct 11 12:05:42 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Thu Oct 11 12:05:42 [initandlisten] **       with --journal, the limit is lower
Thu Oct 11 12:05:42 [initandlisten] 
Thu Oct 11 12:05:42 [initandlisten] db version v2.2.0, pdfile version 4.5
Thu Oct 11 12:05:42 [initandlisten] git version: f5e83eae9cfbec7fb7a071321928f00d1b0c5207
Thu Oct 11 12:05:42 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_49
Thu Oct 11 12:05:42 [initandlisten] options: { repair: true }
Thu Oct 11 12:05:42 [initandlisten] Unable to check for journal files due to: boost::filesystem::basic_directory_iterator constructor: No such file or directory: "/data/db/journal"
Thu Oct 11 12:05:42 [initandlisten] finished checking dbs
Thu Oct 11 12:05:42 dbexit: 
Thu Oct 11 12:05:42 [initandlisten] shutdown: going to close listening sockets...
Thu Oct 11 12:05:42 [initandlisten] shutdown: going to flush diaglog...
Thu Oct 11 12:05:42 [initandlisten] shutdown: going to close sockets...
Thu Oct 11 12:05:42 [initandlisten] shutdown: waiting for fs preallocator...
Thu Oct 11 12:05:42 [initandlisten] shutdown: closing all files...
Thu Oct 11 12:05:42 [initandlisten] closeAllFiles() finished
Thu Oct 11 12:05:42 [initandlisten] shutdown: removing fs lock...
Thu Oct 11 12:05:42 dbexit: really exiting now

但是仍然有同样的问题。


1
我认为这个链接将帮助您 stackoverflow.com/questions/9647561/... 通过改变蒙戈的数据库路径
Med7at

8
sudo service mongod restart为我工作
Sudip Bhandari '18

Answers:


31

日志表明mongodb正在终止,因为有一个旧的锁定文件。

如果不是,也没有通过日记运行,请删除锁定文件,运行修复,然后再次启动mongodb。

如果您正在或正在运行日记功能,请参阅相关的Mongo DB文档。请注意,他们说:“如果您正在使用日记功能运行,则不应进行修复以恢复到一致状态。” 因此,如果您正在记日记,则维修可能会使情况变得更糟。


25
维修会损坏东西,这很糟糕!
UpTheCreek

1
在启用日记功能的情况下,如果我非常频繁地收到连接拒绝错误怎么办?
沙申克

149
Step 1: Remove lock file.
sudo rm /var/lib/mongodb/mongod.lock

Step 2: Repair mongodb. 
sudo mongod --repair 

Step 3: start mongodb.
sudo start mongodb 
or
sudo service mongodb start

Step 4: Check status of mongodb.
sudo status mongodb 
or   
sudo service mongodb status

Step 5: Start mongo console.
mongo 

1
您好,Nanhe Kumnar码头的初始路径是什么。是我们应该转到cd / usr / local / opt / mongodb /文件夹,还是其他文件夹,我正面临以下问题Vijayvir-Singh:〜vijayvir $ sudo rm /var/lib/mongodb/mongod.lock rm:/ var / lib /mongodb/mongod.lock:没有这样的文件或目录Vijayvir-Singh:〜vijayvir $
Vijayvir Sing Pantlia 2014年

@vvss首先找到文件的路径。用这个。找到mongod.lock
Kumar

9
在版本2.4.8中,它/data/db/mongod.lock代替了/var/lib/mongodb/mongod.lock
Loolooii,2014年

84

您跑步mongod前跑步了mongo吗?

我按照http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/上 mongodb的安装说明进行操作,并且只有mongo在实际运行mongo进程之前运行时,我才遇到与您相同的错误mongod。我以为安装mongodb也会启动它,但是您需要先手动启动它,mongod然后再执行需要mongodb的其他任何事情。


10
这是我的问题。令我惊讶的是,“ Mongo入门”文档中并没有明确阐明这一点。
jononomo

从用户体验的角度来看,这确实没有任何意义。mongo.exe应该是启动数据库的那个。
Moshe Karmel

58

这是因为mongod进程已关闭,您必须运行以下命令才能启动mongod进程:

~$ sudo service mongodb stop

~$ sudo rm /var/lib/mongodb/mongod.lock

~$ sudo mongod --repair --dbpath /var/lib/mongodb

~$ sudo mongod --fork --logpath /var/lib/mongodb/mongodb.log --dbpath /var/lib/mongodb

~$ sudo service mongodb start

希望对您有帮助。


2
问题解决了。谢谢。我会在第一个命令之前添加命令sudo service mongod stopsudo service mongodb stop因为有些人可能仍在运行它们。
Georgi Georgiev

1
它帮助我重启了mongo。但是我无法访问旧数据库了。你能在这里帮我吗。
Ehsan

13

尝试

sudo service mongodb start

这解决了我的问题。


sudo service mongod startsudo service mongodb start
geckob

我不太确定,但猜测mongodb是服务的名称,而mongod是程序文件的名称。
潘博韬

7

检查文件系统的可用空间,如果较少,则增加它。这也可能导致mongo无法启动。检查/var/log/mongodb/mongodb.log文件。

ERROR: Insufficient free space for journal files
Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles

这发生在我身上,我在文件/etc/mongod.conf中添加了smallfiles = true
卡洛斯,

7

尝试mongod之前运行mongo

sudo /usr/sbin/mongod 在我的opensuse上

这解决了我的问题,


6

所以首先您必须通过以下命令删除mongod.lock文件

sudo rm /var/lib/mongodb/mongod.lock

然后通过发出以下命令重新启动mongo服务

sudo service mongod restart 

4

您可以检查netstat -anp | grep 27017以查看端口是否正在被另一个进程使用。


奇怪,我得到了:alex @ alex-K43U:〜$ netstat -anp | grep 27017(并非所有进程都可以被识别,非拥有的进程信息将不会显示,您必须是root用户才能看到全部。)
alexchenco 2012年

2
以非root用户身份执行时,这是正常结果,因为netstat仅显示允许用户查看的进程。
伊夫伦2012年

您可以使用sudo netstat -anp | grep 27017绕过该警告
Wiston Coronell

这对我有用,非常感谢。当我运行给定的代码unix 2 [] STREAM 31095-/tmp/mongodb-27017.sock时,我得到了这个,并且删除了.sock文件,现在一切都很好。
亚伯

4

在Windows中以管理员身份运行cmd:

  1. 创建目录:

    mkdir c:\ mongo \ data \ db

  2. 安装服务:

    mongod.exe-安装--logpath c:\ mongo \ logs --logappend --bind_ip 127.0.0.1 --dbpath c:\ mongo \ data \ db --directoryperdb

  3. 启动MongoDB:

    净启动MongoDB

4,启动Mongo Shell:

c:\mongo\bin\mongo.exe

这个解决方案对我来说很好



3

供以后参考,请按照以下步骤操作以避免类似的错误:

1.下载MondoDB https://www.mongodb.com/

2.打开一个终端并CD到您的downloads文件夹或您保存mondodb下载的任何文件夹中(确保在CD进入它之前先解压缩mongodb文件夹)

cd Downloads

3.将mongodb移动到您的usr / local路径

sudo mv mongodb-osx-... /usr/local/mongodb

4.cd进入本地文件夹

cd /usr/local/mongodb

5.建立一个新目录

sudo mkdir -p /data/db

6.cd进入上面刚刚创建的新目录

cd /data/db

7,给予蒙戈渗透

sudo chown YourMacUserName /data/db

8,然后去/打开你的.bash_profile

为此,请按照下列步骤操作:

在您的新终端中

1cd 2 .pwd 3ls -l

检查.bash_profile是否出现在终端上的文件列表中

如果不创建-bash_profile

创建.bash_profile:

在您的终端

触摸.bash_profile

//如果您已经有.bash_profile,请跳过此步骤

步骤8:

接下来 在你的终端:

open .bash_profile

然后在弹出的bash文件中添加以下内容:

MONGO_PATH=/usr/local/mongodb
export PATH=$PATH:$MONGO_PATH/bin

然后保存。(文件保存或命令S / CMD + S)

步骤9:返回您的终端

source .bash_profile

现在打开两个终端。一个将用于您的mondo守护程序,另一个将用于您的mongo

Terminal 1: 在您的终端中输入:mongod

mongodb

输出: 蒙哥德码头

2号航站楼:

mongo

输出: 蒙哥码头

另外,请确保在终端机中启动mongod时没有出现以下错字错误: 这是不正确的

mongo d

发出以下错误无法连接到127.0.0.1:27017,in(轮询后检查套接字是否错误),原因:连接被拒绝

这是对的:

mongod

(在mongo和d .. mondod之间不应有空格。

最后,请始终记住在终端上运行mongo之前必须先运行mondod



2

经过反复尝试,终于可以解决问题了。

Step 1: ps aux | grep mongo
Step 2: sudo rm /var/lib/mongodb/mongod.lock
Step 3: sudo mongod --repair
Step 4: mongo

2

此错误可能是由MongoDB的绑定IP设置引起的。您可以通过以下方式检查MongoDB的配置文件:

$ sudo vi /etc/mongodb.conf

就我而言,绑定IP设置为服务器的Intranet地址,如下所示:

bind_ip = 10.10.1.14 
#port = 27017

所以我给了mongo一个IP参数,按类型连接到shell:

$ mongo 10.10.1.14

如果更改了配置,请不要忘记重启mongodb服务。


2

我具有mongo版本3.2.1,并且必须从此/data/db/之后删除锁定文件,然后运行mongod它并成功启动。

>rm /data/db/mongod.lock
>mongod


1

在删除Windows操作系统中数据目录中的mongod.lock之后,它仍然显示相同的错误消息。我必须使用--dbpath运行mongod才能使mongo命令正确运行。


1

尽管收到了答案,但我还是希望讨论中的网络错误MongoDB

网络错误MongoDB

设置安全写问题并不是确保我们安全的完整方法。假设设置了w=1j=true,如果未从服务器收到写确认,该怎么办?好吧,可能是它没有发生,但是它可能已经发生了。发生这种情况的原因是存在网络错误-某些原因可能导致我们未收到肯定的答复。因此,我们可以通过所选语言的驱动程序从应用程序发送请求。mongod可以成功完成它,然后可能会进行TCP重置,并且实际上网络可以以我们从未收到响应的方式进行重置。因此,我们可能会得到一个错误,并且关于该错误,我们可能会假设我们遇到了错误。它没有发生,但是有可能发生。

对于插入物,可以防止它。这是可能的,因为如果我们让驱动程序创建_id并执行插入操作-那么我们可以多次执行该插入操作,这会造成任何危害。因为,如果我们一次执行此操作,但遇到错误,并且由于网络错误而不确定该插入是否完成,那么我们可以再次执行此操作。并提供我们再次执行的权限,请准确执行_id。最坏的情况是,当我们尝试将其插入时,将得到重复的键错误。

但是,更新是发生问题的地方。特别是,不是项目有效的更新,例如包含$ink命令。因此,我们要告诉数据库增加某个字段。很好,在这种情况下,如果我们遇到网络错误,并且不知道更新是否发生。现在,也许我们对这些值了解得足够多了,可以与他们检查更新发生了,这很好。但是,如果我们不知道数据库中该字段的起始值,那么在网络错误的情况下,我们就无法知道它是否发生。好的网络中很少出现这种问题。

而且,如果我们真的需要不惜一切代价避免使用它,我们需要做的是将所有更新都插入到插入中,方法是从数据库中读取文档的全部值,然后潜在地将其删除并再次插入,或者只是插入一个新的。

即使写入成功,应用程序也可能会返回错误的原因:

  • 在服务器收到写入之后但在发送响应之前,将重置应用程序和服务器之间的网络TCP连接。
  • 所述MongoDB服务器接收到写入和响应它之间终止。
  • 在写的时间到客户端收到对写的响应的时间之间,网络发生故障。

1

这对我有用要停止mongodb的使用:

use admin
db.shutdownServer()

并重新启动:

sudo service mongod restart



0

输入windows + r 并输入以下内容

services.msc

启动MongoDB

现在在存在mongo.exe的相应路径中以cmd键入“ mongo”,它将开始工作。


0

1.在D盘D:/ data / db中创建新文件夹

2.在D:/ data / db上打开终端

3.输入mongod并输入。

4.输入mongo并输入。

并且您的mongodb已经开始.........






0

错误:无法连接到服务器127.0.0.1:27017

这是WINDOWS用户的解决方案,在此处输入代码1.创建目录:

mkdir c:\mongo\data\db
  1. 安装服务:首先使用cd进入MongoDB程序文件中的bin目录

mongod.exe --install --logpath

  1. 启动MongoDB:

    net start MongoDB

4,启动Mongo Shell:

`c:\mongo\bin\mongo.exe` or

直到bin进入 mongo

注意:以管理员模式打开终端


0

Ubuntu 18.04LTS:当我完全卸载以前的版本并安装4.2.6时,会出现问题

经过数小时的谷歌搜索,我解决了另一个问题

MongoDB无法启动-***在fassert()失败后终止

我对无法连接服务器的问题感到绝望,因为一切似乎都很好。

最后,我决定重新启动操作系统,然后猜测一下... BINGO

sudo mongo // works like a charm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.