Linux 不能';t连接到服务器127.0.0.1 shell/mongo.js

Linux 不能';t连接到服务器127.0.0.1 shell/mongo.js,linux,mongodb,ubuntu,Linux,Mongodb,Ubuntu,当我在ubuntu中安装mongodb时,我会尝试:./mongo它会显示以下错误: couldn't connect to server 127.0.0.1 shell/mongo.js 那我该怎么办 谢谢要么您的mongod没有运行(使用“ps”命令检查),要么它正在侦听某个外部IP地址,而不是本地主机。因此,如果“mongod”正在运行,请首先检查进程列表。如果是,请使用“netstat-nap”检查相关端口 当然,您可以在控制台上手动启动mongod,甚至可以查看mongod日志文件

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

 couldn't connect to server 127.0.0.1 shell/mongo.js
那我该怎么办


谢谢

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

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

  • 手动删除锁文件:
    sudorm/var/lib/mongodb/mongod.lock
  • 运行修复脚本:
    sudo-u mongodb mongod-f/etc/mongodb.conf--repair
请注意以下事项:

$ sudo vi /etc/paths
fork = true
port = 27017
quiet = true
dbpath = /data/db
logpath = /data/log/mongod.log
logappend = true
journal = true
$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
>
  • 您必须以mongodb用户身份运行此命令。如果以root用户身份运行, 然后root将拥有/var/lib/mongodb/中的文件,这些文件是 运行mongodb守护进程,因此当守护进程尝试运行时 以后作为mongodb用户,它将没有启动权限。在里面 在这种情况下,您将得到以下错误:无法创建/打开锁定文件 对于lockfilepath:/var/lib/mongodb/mongod.lock errno:13权限 拒绝,终止
  • 在Ubuntu上,必须指定配置文件/etc/mongodb.conf 使用-f标志。否则,它将在中查找数据文件 错误的位置,您将看到以下错误:dbpath(/data/db/) 不存在,正在终止

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

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

    1 sudo service mongod start
    2 mongo
    
    就在这里!服务器即将运行。现在,如果你想要Mongo服务 要在系统启动时启动,则必须运行:

    sudo chkconfig --levels 235 mongod on
    
    就这些!如果这样做,现在在shell中只需按顺序键入mongo 要启动服务器,问题是您必须先启动服务,然后再启动服务器:)


    另外,我发布的命令可能也适用于其他linux发行版,而不仅仅是fedora。。。如果不是这样,您可能需要根据所使用的发行版调整一些单词;)

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

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

    **见类似问题--

    以下是所有的,有时,在执行这些操作后启动mongo需要一段时间。

    在Ubuntu上,尝试以下操作:

    sudo invoke-rc.d mongodb start
    

    首先,您必须确保/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
    

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

    df -h /
    
    您将在mongod发布中看到这样的smth:

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

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

    Users-MacBook-Pro:csv1 Admin$ mongod
    all output going to: /usr/local/var/log/mongodb/mongo.log
    
    然后打开另一个终端窗口并打开外壳

    Users-MacBook-Pro:csv1 Admin$ mongo
    

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

    尝试以下步骤:

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

    /usr/local/Cellar/mongodb/2.4.6/
    
    要更新$PATH变量,请执行以下操作:

    $ sudo vi /etc/paths
    
    fork = true
    port = 27017
    quiet = true
    dbpath = /data/db
    logpath = /data/log/mongod.log
    logappend = true
    journal = true
    
    $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
    >
    
    然后,按“i”在Vi中插入文本,并将您的MongoDB路径附加到“path”文件的末尾,然后重新启动终端

    /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
    
    添加以下内容:

    $ sudo vi /etc/paths
    
    fork = true
    port = 27017
    quiet = true
    dbpath = /data/db
    logpath = /data/log/mongod.log
    logappend = true
    journal = true
    
    $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
    >
    
    请注意,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服务

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

    $ sudo vi /etc/paths
    
    fork = true
    port = 27017
    quiet = true
    dbpath = /data/db
    logpath = /data/log/mongod.log
    logappend = true
    journal = true
    
    $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
    >
    
    忽略警告,但您已成功连接到“测试”数据库!酷

    就这些。当我