【问题标题】:Errr 'mongo.js:L112 Error: couldn't connect to server 127.0.0.1:27017 at src/mongo/shell/mongo.js:L112'Errr 'mongo.js:L112 错误:无法在 src/mongo/shell/mongo.js:L112 连接到服务器 127.0.0.1:27017'
【发布时间】:2013-04-13 18:40:33
【问题描述】:

我无法连接到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


【解决方案1】:

如果您运行的是 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
    

那你就可以成功执行了(希望如此)。

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

【讨论】:

  • 比我通常修复 mongodb 的方法要好:D
  • 这对我有用!我的虚拟机被强制关闭,并且在启动时 mongodb 表现得很愚蠢。这个解决方案效果很好。
  • 这也适用于 CentOS,但你应该使用 mongod 代替 mongodb 用户名,/var/lib/mongo/ dir 代替 /var/lib/mongodb/sudo service *mongod* start 而不是 sudo service *mongodb* start
  • 我遇到了同样的问题。我已经完成了以上所有工作并且工作正常。但是,当我尝试从我的应用程序连接到 mongodb 实例时,我收到错误 failed to connect to [undefined:27017]。我正在使用 mongoose 3.8.1 知道还缺少什么吗?
  • @sumitramteke 我对问题进行了分类。我依赖于数据库连接的运行时配置选项,所以我必须在终端上设置NODE_ENV,它工作正常。
【解决方案2】:

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

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

【讨论】:

  • 这会删除 mongo 上的任何当前数据库吗?
【解决方案3】:

仅当您想修复数据文件而不保留原始文件时,此方法才有效。要查找 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

【讨论】:

  • 谢谢!这在 OSX 上对我有用。我使用自制软件安装了 mongodb,配置文件的路径是 /usr/local/etc/mongod.conf
【解决方案4】:

我过去也遇到过同样的问题。就我而言,我没有足够的可用空间来存放日志文件。释放一些空间解决了这个问题。

【讨论】:

  • 其实对我来说是同一个pb!
  • 查看“tail -f /var/log/mongodb/mongodb.log”中的日志文件,你就会知道具体的问题了。
【解决方案5】:

我遇到了同样的问题。在 bin 内运行 mongod(你安装了 mongodb 的地方)对我有用。我也没有足够的空间。

【讨论】:

    【解决方案6】:

    我不知道为什么@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...
    

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

    【讨论】:

    • 我真的不明白为什么我在这里被否决了......我提供了一个对我有用的答案并记录了它......我希望我能对你的downvote投反对票,这显然是一个“令人震惊的马虎,不费吹灰之力的帖子”,而我的不是...温和的提醒:“每当您遇到一个非常草率,不费力的帖子,或者一个明显且可能危险地不正确的答案时,请使用您的反对票”official source
    【解决方案7】:

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

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

    $mongo 127.0.0.1:your_new_port_number
    

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

    来自MongoDB docs

    【讨论】:

      【解决方案8】:

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

      尝试以下步骤:

      更新您的 $PATH 变量以指向您的 MongoDB bin 文件。在我的情况下 brew install 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 服务了。打开两个终端实例。在终端 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 服务。

      现在,要连接到它,在 Terminal 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

      希望对你有帮助!

      干杯, 钦梅

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
      • @ZachSaucier 感谢您的提醒!我已经修改了帖子。 :) 这是我在 Stackoverflow 上的第一个回复! :) 干杯。
      猜你喜欢
      • 2013-04-21
      • 2013-10-31
      • 2012-10-30
      • 2016-09-03
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      相关资源
      最近更新 更多