【问题标题】:couldn't connect to server 127.0.0.1 shell/mongo.js无法连接到服务器 127.0.0.1 shell/mongo.js
【发布时间】:2011-08-09 05:19:31
【问题描述】:

当我在我的 ubuntu 中设置 mongodb 时,我尝试:./mongo 它显示此错误:

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

那我该怎么办,

谢谢

【问题讨论】:

  • 你是怎么安装的?你用过天赋吗?你是直接下载tarbal的吗?
  • 我遇到了这个错误,这是因为在 ubuntu 上我没有先运行 mongod

标签: linux mongodb ubuntu


【解决方案1】:
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.
【解决方案2】:

我在尝试安装 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中已有的数据库吗?
【解决方案3】:

我在 ubuntu 12.04 上通过以下步骤解决了这个问题:
1) sudo rm /var/log/mongodb
2) sudo rm /var/lib/mongodb
3) 我删除了 mongo,然后再次安装它
4) sudo service mongodb restart

一切都好

【讨论】:

    【解决方案4】:

    可能是 $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。

    希望对你有帮助!

    干杯, 钦梅

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    • @RadimKöhler,感谢您的提醒。我已经更正了答案。希望这会对某人有所帮助。干杯。
    【解决方案5】:

    首先通过

    启动你的mongo服务器
    Users-MacBook-Pro:csv1 Admin$ mongod
    all output going to: /usr/local/var/log/mongodb/mongo.log
    

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

    Users-MacBook-Pro:csv1 Admin$ mongo
    

    【讨论】:

      【解决方案6】:

      还要检查你的根分区是否有足够的空间来启动 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...
      

      【讨论】:

        【解决方案7】:

        首先,您必须确保 /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 条目中唯一对我有用的解决方案。谢谢你,先生。
        • 在 Ubuntu 14 上,从配置文件开始并强制修复的命令是 sudo -u mongodb mongod -f /etc/mongod.conf --repair。
        【解决方案8】:

        在 Ubuntu 上,试试这个:

        sudo invoke-rc.d mongodb start
        

        【讨论】:

          【解决方案9】:
          • 手动删除锁定文件:sudo rm /var/lib/mongodb/mongod.lock
          • 运行修复脚本:sudo -u mongodb mongod -f /etc/mongodb.conf --repair

          请注意以下几点:

          • 您必须以 mongodb 用户身份运行此命令。如果你以root身份运行它, 然后 root 将拥有 /var/lib/mongodb/ 中的文件,这些文件是必要的 运行 mongodb 守护进程,因此当守护进程尝试运行时 以后作为 mongodb 用户,将无权启动。在 这种情况下你会得到这个错误:无法创建/打开锁定文件 对于锁文件路径:/var/lib/mongodb/mongod.lock errno:13 权限 拒绝,终止。
          • 在 Ubuntu 上,必须指定配置文件 /etc/mongodb.conf 使用 -f 标志。否则它将在 错误的地方,你会看到以下错误:dbpath (/data/db/) 不存在,正在终止。

          【讨论】:

          • 很好的链接。正好解决了问题。
          • 如何以 mongodb 用户身份运行它?
          • 只需将自己添加到 mongodb 组:useradd -G mongodb fady 将 fady 替换为您的用户名。
          • 我多次运行修复,但直到我手动删除 .lock 文件(如您所说)才有效,它现在可以工作,但我只想知道为什么手动删除 .lock 文件有效?
          • 我不得不同时使用这个答案的信息和@boulder_ruby 的答案。这是因为我的 '/data/db/' 丢失了。也许这个答案更完整可能是一个很好的更新。
          【解决方案10】:

          尝试运行 $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 进程的同一用户写入。

          **查看类似问题--Getting an error, "Error: couldn't connect to server 127.0.0.1 shell/mongo.js" & when trying to run mongodb on mac osx lion

          【讨论】:

          • 你也可以像这样设置dbpath:mongod --dbpath ../data
          【解决方案11】:

          你需要在ubuntu上删除锁定文件mongod.lock或/var/lib/mongodb/mongod.lock,然后你需要先在ubuntu上运行mongod.exe或service mongodb start,再在ubuntu上运行mongo.exe或mongo。

          【讨论】:

          • OP 在 Ubuntu 上,所以我很确定他们不会使用任何 .exe 文件。
          • 我收到此错误消息,但在我的文件系统上找不到“mongod.lock”。这些说明是否适用于 Mac OSX?
          【解决方案12】:

          这实际上不是错误...这里发生的情况是 Mongo 依赖一个 守护进程 来运行本地数据库服务器,因此为了“启动” mongo server 在你的 shell 中,你必须先启动 mongo 服务。

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

          1 sudo service mongod start
          2 mongo
          

          你有它!服务器将运行。现在,如果你想要 Mongo 服务 要在系统启动时启动,然后您必须运行:

          sudo chkconfig --levels 235 mongod on
          

          仅此而已!如果你这样做,现在在 shell 中你只需要按顺序输入 mongo 启动服务器,但仅此而已,问题是您必须先启动 SERVICE,然后再启动 SERVER :)

          附:我发布的命令可能也适用于其他 Linux 发行版,而不仅仅是在 Fedora 中...如果不是,您可能需要根据您使用的发行版调整一些单词;)

          【讨论】:

          • 同样的解决方案适用于问题:stackoverflow.com/questions/7958228/…
          • 很多次我都被难住了,挠了挠头,终于意识到:'哦,我只需要 sudo。"
          • 对于 Debian/Ubuntu 变体:sudo service mongodb start
          【解决方案13】:

          要么你的 mongod 没有运行(使用“ps”命令检查),要么它正在侦听一些外部 IP 地址而不是本地主机。因此,如果“mongod”正在运行,请首先检查进程列表。如果是,请检查相关端口的“netstat -nap”。

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

          【讨论】:

            猜你喜欢
            • 2013-10-31
            • 2021-05-29
            • 1970-01-01
            • 2013-04-21
            • 2012-10-30
            • 1970-01-01
            • 2012-02-08
            相关资源
            最近更新 更多