Linux 不能';t连接到服务器127.0.0.1 shell/mongo.js
当我在ubuntu中安装mongodb时,我会尝试:./mongo它会显示以下错误: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日志文件
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
>
忽略警告,但您已成功连接到“测试”数据库!酷
就这些。当我