无法连接到服务器127.0.0.1 shell / mongo.js


88

当我在ubuntu中安装mongodb时,我尝试:./mongo显示此错误:

 couldn't connect to server 127.0.0.1 shell/mongo.js

那我该怎么办,

谢谢


您是如何安装的?你有能力吗?您是否直接下载了tarbal?
Bryan Migliorisi

1
我遇到了这个错误,这是因为在ubuntu上我没有mongod先运行
Connor Leech 2014年

Answers:


124
  • 手动删除锁定文件: sudo rm /var/lib/mongodb/mongod.lock
  • 运行修复脚本: sudo -u mongodb mongod -f /etc/mongodb.conf --repair

请注意以下事项:

  • 您必须以mongodb用户身份运行此命令。如果您以root用户身份运行,则root将在/ var / lib / mongodb /中拥有运行mongodb守护程序所需的文件,因此,当该守护程序尝试以mongodb用户身份稍后运行时,它将没有启动权限。在这种情况下,您会收到以下错误消息:无法为lockfilepath创建/打开锁文件:/var/lib/mongodb/mongod.lock errno:13权限被拒绝,正在终止。
  • 在Ubuntu上,必须使用-f标志指定配置文件/etc/mongodb.conf。否则,它将在错误的位置查找数据文件,并且您会看到以下错误:dbpath(/ data / db /)不存在,正在终止。

很棒的链接。完全解决了问题。
jaketrent 2012年

1
答案在上面。
fady mohamed osman 2012年

2
如何以mongodb用户身份运行它?
user4951 2012年

只需将您自己添加到mongodb组:useradd -G mongodb fady用您的用户名替换fady。
fady mohamed osman 2012年

2
我不得不同时使用此答案的信息以及@boulder_ruby的答案。这是因为我的“ / data / db /”丢失了。也许这个答案更完整可以是一个很好的更新。
Fabricio Buzeto

32
sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

有时,执行这些操作后,有时需要一些时间才能启动mongo。


如果我尝试`sudo -u mongodb mongod -f /etc/mongodb.conf --repair`,这就是我得到的:Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
Aleksandrus,

21

尝试运行$ mongod

如果出现诸如以下错误

MongoDB shell version: 2.0.5
connecting to: test
Fri Jun  1 11:20:33 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84
exception: connect failed

hisham-agil:~ hisham$ mongod
mongod --help for help and startup options
Fri Jun  1 11:24:47 [initandlisten] MongoDB starting : pid=53452 port=27017 dbpath=/data/db/ 64-bit host=hisham-agil.local
Fri Jun  1 11:24:47 [initandlisten] db version v2.0.5, pdfile version 4.5
Fri Jun  1 11:24:47 [initandlisten] git version: nogitversion
Fri Jun  1 11:24:47 [initandlisten] build info: Darwin gamma.local 11.3.0 Darwin Kernel Version 11.3.0: Thu Jan 12 18:48:32 PST 2012; root:xnu-1699.24.23~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_49
Fri Jun  1 11:24:47 [initandlisten] options: {}
Fri Jun  1 11:24:47 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Fri Jun  1 11:24:47 dbexit: 
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to close listening sockets...
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to flush diaglog...
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to close sockets...
Fri Jun  1 11:24:47 [initandlisten] shutdown: waiting for fs preallocator...
Fri Jun  1 11:24:47 [initandlisten] shutdown: lock for final commit...
Fri Jun  1 11:24:47 [initandlisten] shutdown: final commit...
Fri Jun  1 11:24:47 [initandlisten] shutdown: closing all files...
Fri Jun  1 11:24:47 [initandlisten] closeAllFiles() finished
Fri Jun  1 11:24:47 dbexit: really exiting now

然后,您遇到了非常常见的基本启动错误。

默认情况下,mongod会尝试将/ data / db用于其数据库文件,在这种情况下,该文件不存在。

你不能开始

mongo 

直到你处理

mongod.

尝试创建这些目录,并确保它们可以由运行mongod进程的同一用户写入。

**看到类似的问题- 收到错误消息“错误:无法连接到服务器127.0.0.1 shell / mongo.js”,并尝试在Mac OS X Lion上运行mongodb


您还可以像这样设置dbpath:mongod --dbpath ../data
cbaigorri

20

这实际上不是错误……这里发生的是Mongo依靠守护程序来运行本地数据库服务器,因此为了在外壳中“启动” mongo服务器,您必须启动mongo服务第一。

对于Fedora Linux(我使用的是Distro),您必须运行以下命令:

1 sudo service mongod start
2 mongo

在那里,您拥有了!服务器将要运行。现在,如果您希望在系统启动时启动Mongo服务,则必须运行:

sudo chkconfig --levels 235 mongod on

就这样!如果这样做,现在只需在外壳程序中键入mongo即可启动服务器,但这已经足够了,问题在于您必须先启动SERVICE,然后再启动SERVER :)

PS我发布的命令可能也可以在其他linux发行版上使用,而不仅是在fedora中...如果不是,根据您使用的发行版,您可能不得不调整一些单词;)


相同的解决方案适用于问题:stackoverflow.com/questions/7958228/...
Jmlevick

这么多次,我很困惑,挠了一下头,终于意识到:'哦,我只需要sudo。”
本作者

2
对于Debian / Ubuntu变体: sudo service mongodb start
ljs.dev

10

尝试安装mongo时遇到相同的问题。我有错误,

错误

"Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84"

解:

首先使用以下命令安装mongod:

sudo apt-get install mongodb-server

然后输入

mongod --dbpath /mongo/db

然后

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

然后

sudo -u mongodb mongod -f /etc/mongodb.conf  --repair

谢谢


这种方法会删除mongo中现有的数据库吗?
埃文(Evan)2015年

6

您需要删除锁定文件mongod.lock/var/lib/mongodb/mongod.lock在Ubuntu上,那么你需要运行mongod.exeservice mongodb start在Ubuntu上,然后再运行mongo.exemongo在Ubuntu。


OP在Ubuntu上,因此我很确定他们不会使用任何.exe文件。
me_and 2012年

我收到此错误消息,并且在文件系统上找不到“ mongod.lock”。这些说明是否适用于Mac OSX?
boulder_ruby 2012年

5

您的mongod不在运行(使用“ ps”命令检查),或者在某个外部IP地址而不是本地主机上侦听。因此,首先检查进程列表是否正在运行“ mongod”。如果是,请使用“ netstat -nap”检查相关端口。

当然,您可以在控制台上手动启动mongod,甚至查看mongod日志文件(如果已配置一个...取决于您安装mongod的方式)。


5

首先,您必须确保/ var / lib / mongodb /文件夹(或dbpath指向的文件夹)中的所有文件和目录都属于mongodb用户和mongodb组。

cd /var/lib/mongodb/
sudo chown mongodb filename.*
sudo chgrp mongodb filename.*
sudo chown -R mongodb directory
sudo chgrp -R mongodb directory

(用各自的名称替换文件名和目录)

然后,您可以像其他人已经提到的那样,删除锁,修复数据库并重新启动守护程序:

sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

为什么没有对此的支持?在我看过的六个SO条目中,这是唯一对我有用的解决方案。谢谢你,先生。
FRD 2013年

该命令启动与配置文件和强制维修是sudo -u mongodb mongod -f /etc/mongod.conf --repair在Ubuntu 14
okoboko

5

首先通过以下方式启动mongo服务器

Users-MacBook-Pro:csv1 Admin$ mongod
all output going to: /usr/local/var/log/mongodb/mongo.log

然后打开另一个终端窗口并打开外壳

Users-MacBook-Pro:csv1 Admin$ mongo

2

还要检查您的根分区是否有足够的空间来启动mongod。

df -h /

您会在mongod启动时看到类似的内容:

Mon Aug 12 17:02:59.159 [initandlisten] recover : no journal files present, no recovery needed
Mon Aug 12 17:02:59.159 [initandlisten] 
Mon Aug 12 17:02:59.159 [initandlisten] ERROR: Insufficient free space for journal files
Mon Aug 12 17:02:59.159 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
Mon Aug 12 17:02:59.159 [initandlisten] 
Mon Aug 12 17:02:59.159 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Mon Aug 12 17:02:59.159 dbexit: 
Mon Aug 12 17:02:59.159 [initandlisten] shutdown: going to close listening sockets...

1

在Ubuntu上,尝试以下操作:

sudo invoke-rc.d mongodb start

1

可能是$ PATH和Permission问题的组合。

请尝试以下步骤:

更新$ PATH变量以指向MongoDB bin文件。在我的情况下,将MongoDB安装到此文件夹:

/usr/local/Cellar/mongodb/2.4.6/

为了更新您的$ PATH变量,请执行以下操作:

$ sudo vi /etc/paths

然后,按“ i”在Vi中插入文本,并将您的MongoDB路径附加到“路径”文件的末尾,然后重新启动终端。

/usr/local/Cellar/mongodb/2.4.6/bin

使用'Esc:w q'保存并退出Vi编辑器。

使用echo显示路径变量:

$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/Cellar/mongodb/2.4.6/bin

现在尝试检查Mongo的版本,如果您得到关注,那您就走对了!

$ mongo --version
MongoDB shell version: 2.4.6

现在我们需要创建数据库目录。我使用了MongoDB文档中建议的默认'/ data / db'位置。我还创建了一个日志目录,以避免在Mongo尝试创建任何日志时出现任何权限问题。更改所有权即可完成工作。

$ sudo mkdir /data/db
$ sudo mkdir /data/log
$ whoami
username
$ chown -R username /data

现在,我们将为MongoDB创建一个默认的配置文件,以便在我们首次运行“ mongod”命令时提供。现在,我还要指出的是,“ mongod”将启动一项服务,该服务将侦听传入的数据连接。这与执行'$ service mysqld start'类似。让我们继续创建配置文件。请记住,我已经创建了非常基本的配置文件。但是,您可以添加许多其他变量来配置MongoDB。这是我第一次玩MongoDB,所以我对MongoDB文档的了解非常了解!我创建了“ mongodb.conf”。

$ sudo vi /etc/mongodb.conf

添加以下内容:

fork = true
port = 27017
quiet = true
dbpath = /data/db
logpath = /data/log/mongod.log
logappend = true
journal = true

请注意,MongoDB服务器的默认端口为27017。对于在步骤– 5中创建的dbpath和logpath使用您自己的路径。不要忘记关闭并保存conf文件。

现在我们已经准备好启动我们的MongoDB服务。打开Terminal的两个实例。在Terminal 1中,输入:

$ sudo mongod -f /etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3516
all output going to: /data/log/mongod.log
child process started successfully, parent exiting

如果收到上述消息,则说明您已成功启动Mongod服务。

现在,要连接到它,请在2号终端中输入以下内容:

$mongo test
MongoDB shell version: 2.4.6
connecting to: test
Server has startup warnings:
Tue Sep 3 16:55:43.527 [initandlisten]
Tue Sep 3 16:55:43.527 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
>

忽略警告,但您已成功连接到“测试”数据库!凉!

就这样。第一次尝试在Mac上安装MongoDB副本时,我应用了此解决方案。看看这是否对您也有帮助。

有关详细的帖子,您可以转到此处-http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094

希望对您有所帮助!

干杯,下巴


尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会失效。
RadimKöhler2014年

@RadimKöhler,感谢您的注意。我已经纠正了答案。希望这会帮助某人。干杯。
Chinmay 2014年

1

我通过以下步骤在ubuntu 12.04上解决了此问题:
1)sudo rm / var / log / mongodb
2)sudo rm / var / lib / mongodb
3)我删除了mongo,然后再次安装
4)sudo服务mongodb重新启动

一切都很好

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.