我尝试连接到 mongodb based on the instructions provided here ,却收到此错误:
vamsiampolu1@takenote:~/workspace (master) $ ./mongod
2014-11-17T09:00:10.101+0000 ** WARNING: --rest is specified without --httpinterface,
2014-11-17T09:00:10.101+0000 ** enabling http interface
warning: bind_ip of 0.0.0.0 is unnecessary; listens on all ips by default
2014-11-17T09:00:10.106+0000 [initandlisten] MongoDB starting : pid=2274 port=27017 dbpath=data 64-bit host=vamsiampolu1-takenote-1084968
2014-11-17T09:00:10.106+0000 [initandlisten] db version v2.6.5
2014-11-17T09:00:10.106+0000 [initandlisten] git version: e99d4fcb4279c0279796f237aa92fe3b64560bf6
2014-11-17T09:00:10.106+0000 [initandlisten] build info: Linux build8.nj1.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
2014-11-17T09:00:10.106+0000 [initandlisten] allocator: tcmalloc
2014-11-17T09:00:10.107+0000 [initandlisten] options: { net: { bindIp: "0.0.0.0", http: { RESTInterfaceEnabled: true, enabled: true } }, storage: { dbPath: "data", journal: { enabled: false } } }
**************
Unclean shutdown detected.
Please visit http://dochub.mongodb.org/core/repair for recovery instructions.
*************
2014-11-17T09:00:10.107+0000 [initandlisten] exception in initAndListen: 12596 old lock file, terminating
2014-11-17T09:00:10.107+0000 [initandlisten] dbexit:
2014-11-17T09:00:10.107+0000 [initandlisten] shutdown: going to close listening sockets...
2014-11-17T09:00:10.107+0000 [initandlisten] shutdown: going to flush diaglog...
2014-11-17T09:00:10.107+0000 [initandlisten] shutdown: going to close sockets...
2014-11-17T09:00:10.107+0000 [initandlisten] shutdown: waiting for fs preallocator...
2014-11-17T09:00:10.107+0000 [initandlisten] shutdown: closing all files...
2014-11-17T09:00:10.107+0000 [initandlisten] closeAllFiles() finished
2014-11-17T09:00:10.107+0000 [initandlisten] dbexit: really exiting now
编辑:
我尝试过使用 mongod --repair
标志。我还尝试执行此脚本,这是我在未关闭 mongod< 的情况下关闭本地计算机时所做的操作
正确:
#!/bin/sh
sudo rm /var/lib/mongodb/mongod.lock
sudo -u mongodb mongod -f /etc/mongodb.conf --repair
sudo service mongodb start
它说找不到文件/var/lib/mongodb/mongod.lock
。我尝试将mongodb
作为服务启动:
sudo service mongod start
其中,它要求我使用 mongod start
,它也失败并显示相同的消息。我已经阅读了有关 net.http.enabled
的内容,应该将其关闭,因为它可以增加网络曝光度。
我曾经使用过基于 Ubuntu 12.04
的 vagrant
盒子,所以我尝试了:
mongodb start
这告诉我 mongodb
不是一个有效的命令。
我也尝试过 mongo
它告诉我:
vamsiampolu1@takenote:~/workspace (master) $ mongo
MongoDB shell version: 2.6.5
connecting to: test
2014-11-17T11:51:44.752+0000 warning: Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
2014-11-17T11:51:44.753+0000 Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed at src/mongo/shell/mongo.js:146
exception: connect failed
我相信我可能错误地关闭了运行 mongod
的终端窗口,因此无法启动它。但它不会让我做我通常做的事情并继续工作。
我还尝试运行它来查找 mongod
是否已经在运行:
vamsiampolu1@takenote:~/workspace (master) $ ps ax | grep mongod
2504 pts/2 S+ 0:00 grep --color=auto mongod
我尝试使用以下命令阻止它运行:
stop mongod
然后我再次运行以查看 mongod 是否仍在运行:
vamsiampolu1@takenote:~/workspace (master) $ ps ax | grep mongod
2524 pts/2 S+ 0:00 grep --color=auto mongod
当我尝试运行这个时:
vamsiampolu1@takenote:~/workspace (master) $ mongod --shutdown
There doesn't seem to be a server running with dbpath: /data/db
当我尝试手动设置dbpath
时:
vamsiampolu1@takenote:~/workspace (master) $ ./mongod --dbpath /data/db
Error parsing command line: Multiple occurrences of option "--dbpath"
最佳答案
在我看来,你做了很多纵横交错的事情,却没有真正理解自己在做什么。
但是基本的理解是必要的。因此,这里有一个逐步指南,用于清理环境并希望修复数据库(带注释)。您确实有备份,不是吗?
决定是否要使用 mongod 作为您自己的用户
vamsiampolu1
、root 用户或专用用户。与普遍的看法相反,sudo
命令在 Linux/UNIX 中并不等同于“我真的希望你执行这个命令!”和跺脚。不带-u
参数的 sudo 以 root 权限执行其参数 - 进程的有效用户 ID 将是 root 的。将为用户和组 root 创建文件和目录(除了问题中的进程会删除 root 权限)。通常,最好为任何守护程序指定一个专用用户,因此您应该使用 mongodb,因为这是 ubuntu 和 10gen 软件包创建的用户。现在我们需要确保没有 mongod 正在运行:
vamsiampolu1@takenote:~ $ sudo killall mongod
(我们想要杀死所有 mongod 进程,并且由于唯一能够杀死可能属于与自己不同的用户的进程的用户是 root,因此我们告诉系统使用 root 执行此命令特权)
我们确保所有文件和目录都属于正确的用户
vamsiampolu1@takenote:~ $ sudo chown mongodb.mongodb -r /var/lib/mongodb
(我们想将/var/lib/mongodb 下面的所有目录的所有者和组递归地更改为用户 mongodb 和组 mongodb,并且我们需要相应的权限才能执行此操作)
我们以 mongodb 用户身份删除锁定文件
vamsiampolu1@takenote:~ $ sudo -u mongodb rm /var/lib/mongodb/mongod.lock
接下来,我们将以 mongodb 用户身份运行修复命令
vamsiampolu1@takenote:~ $ sudo -u mongodb mongod -f /etc/mongod.conf --repair
请注意,
-u mongodb
对于修复后系统正常工作至关重要。这可能需要一段时间。仔细观察日志文件
vamsiampolu1@takenote:~ $ tail -n 100 -f /var/log/mongodb/mongod.log
如果显示
[initandlisten] dbexit:现在确实退出
,那么...启动 mongod
vamsiampolu1@takenote:~ $ sudo -u mongodb mongod -f /etc/mongod.conf
现在应该可以工作了。如果没有,请添加最后一次出现的日志文件部分
[initandlisten] repairDatabase local
一直到你的问题结束。
关于node.js - 连接到 Cloud 9 上的 mongodb 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26969448/