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

时间:2013-04-20 12:32:38

标签: linux mongodb centos mongoose

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

  

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

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

8 个答案:

答案 0 :(得分:78)

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

运行以下命令:

  1. 停止MongoDB服务

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

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

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

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

    mongo
    
  6. 然后你就能成功执行(我希望)。

    参考: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

答案 1 :(得分:34)

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

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

答案 2 :(得分:16)

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

vim /etc/mongodb.conf

检查选项dbpath=

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

默认值:/data/db/

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

/ var / lib / mongodb 替换为 dbpath

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

答案 3 :(得分:3)

过去我遇到过同样的问题。在我的情况下,我没有足够的可用空间用于日志文件。释放一些空间解决了这个问题。

答案 4 :(得分:2)

我不知道为什么@lkrzysiak的答案被低估了:它对我有用!可用空间不足可能是我得到的这个错误的根源,请参阅我得到的日志:

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

经过一些清洁以释放一些空间后,它就像一个魅力!

答案 5 :(得分:2)

我遇到了同样的问题。在bin(你安装了你的mongodb)中运行mongod为我工作。我也没有足够的空间。

答案 6 :(得分:0)

如果在/etc/mongo.conf中更改了mongoDB的默认端口,也会出现此错误

在这种情况下通过shell连接使用: -

$mongo 127.0.0.1:your_new_port_number

OR

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

来自MongoDB docs

答案 7 :(得分:0)

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

请尝试以下步骤:

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

/usr/local/Cellar/mongodb/2.4.6/

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

$ sudo vi /etc/paths

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

/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

现在,我们将为第一次运行'mongod'命令时提供MongoDB的默认配置文件。现在,我还想指出'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。不要忘记关闭并保存配置文件。

现在我们都准备启动我们的MongoDB服务。打开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

我希望它有所帮助!

干杯, Chinmay