Errr'mongo.js:L112错误:无法通过src / mongo / shell / mongo.js:L112'连接到服务器127.0.0.1:27017

问题描述 投票:32回答:9

我无法连接到MongoDB。在Ubuntu中,它可以工作,但是我现在在CentOS中工作。这是错误消息:

MongoDB Shell版本:2.4.2 连接到:测试 周六4月20 07:22:09.390 JavaScript执行失败:错误:无法在src / mongo / shell / mongo.js:L112连接到服务器127.0.0.1:27017 异常:连接失败

我尝试删除mongod.lock文件,但是它不起作用。

linux mongodb centos mongoose
9个回答
34
投票

尝试删除/var/lib/mongodb/mongod.lock并重新启动mongdo服务

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

78
投票

如果您正在运行Ubuntu,则文件夹所有权存在问题。

运行这些命令:

  1. 停止MongoDB服务

    sudo service mongodb stop
    
  2. 删除MongoDB锁定文件

    sudo rm /var/lib/mongodb/mongod.lock
    
  3. 将所有权从根更改为MongoDB路径

    sudo chown -R mongodb:mongodb /var/lib/mongodb/
    
  4. 启动MongoDB服务

    sudo service mongodb start
    
  5. 测试mongo应用程序

    mongo
    

然后您将能够成功执行(希望)。

参考:an answer on Stack Exchange site Database Administrators to Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91 when changing mongodb data directory


16
投票

仅当您要在不保留原始文件的情况下修复数据文件时,此方法才有效。要找到dbpath所在的位置,请使用

vim /etc/mongodb.conf

检查选项dbpath=

(我有dbpath=/var/lib/mongodb。]

默认:/data/db/

典型位置包括/srv/mongodb/var/lib/mongodb/opt/mongodb

用您的dbpath替换/ var / lib / mongodb

sudo rm /var/lib/mongodb/mongod.lock
sudo mongod --dbpath /var/lib/mongodb/ --repair
sudo mongod --dbpath /var/lib/mongodb/ --journal

((请确保使您的终端在运行上述各行的状态下运行。请不要按Ctrl

+ C或退出它。)现在,键入命令以启动mongo另一个窗口。

我希望这对您有用!对于那些想要在保留原始文件的同时修复您的数据文件的人,请参见mongo recover

过去我有同样的问题。就我而言,我没有足够的可用空间来存储日记文件。释放一些空间可以解决问题。

我遇到了同样的问题。在bin(在其中安装了mongodb的位置)中运行mongod对我有用。我也没有足够的空间。

我不知道为什么@lkrzysiak答案被否决:它对我有用!可用空间不足也可能是导致此错误的原因,请参阅日志:

mongo

进行一些清洁以释放一些空间后,它就像一种魅力!

如果您已经更改了/etc/mongo.conf中mongoDB的默认端口,也会收到此错误

在这种情况下,通过外壳连接使用:-

    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...

OR

$mongo 127.0.0.1:your_new_port_number

来自$mongo -u <user> -p <pass> --host <host> --port your_new_port_number

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

尝试以下步骤:

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

MongoDB docs

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

/usr/local/Cellar/mongodb/2.4.6/

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

$ sudo vi /etc/paths

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

使用echo显示路径变量:

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

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

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

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

$ mongo --version
MongoDB shell version: 2.4.6

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

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

添加以下内容:

$ sudo vi /etc/mongodb.conf

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

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

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

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

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

$ 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

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

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

有关详细信息,您可以在这里-$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 >

我希望它会有所帮助!

干杯,下巴

似乎您的端口已在使用中,请尝试更改27017以外的端口号。然后先从“ mongod”命令开始,该命令在运行“ mongo”之后一直在后台运行。这个在我的Mac上为我工作了

查找“ usr / local / etc”目录 在“ etc”文件夹中找到“ mongod.conf” 在该文件中,我必须将bindIp配置项设置为0.0.0.0,我将端口更改为27020

http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094

运行中:

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

然后通过在终端中打开新标签页进行以下操作:

# network interfaces
net:
  port: 27020
  bindIp: 0.0.0.0

希望这对您有用。


3
投票

过去我有同样的问题。就我而言,我没有足够的可用空间来存储日记文件。释放一些空间可以解决问题。


2
投票

我遇到了同样的问题。在bin(在其中安装了mongodb的位置)中运行mongod对我有用。我也没有足够的空间。


2
投票

我不知道为什么@lkrzysiak答案被否决:它对我有用!可用空间不足也可能是导致此错误的原因,请参阅日志:


0
投票

如果您已经更改了/etc/mongo.conf中mongoDB的默认端口,也会收到此错误


0
投票

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


0
投票

似乎您的端口已在使用中,请尝试更改27017以外的端口号。然后先从“ mongod”命令开始,该命令在运行“ mongo”之后一直在后台运行。这个在我的Mac上为我工作了

© www.soinside.com 2019 - 2024. All rights reserved.