sanket@sanket:~$ sudo mongod
sudo: unable to resolve host sanket
[sudo] password for sanket:
mongod --help for help and startup options
Sun Oct 5 09:58:48.970 [initandlisten] MongoDB starting : pid=2548 port=27017 dbpath=/data/db/ 64-bit host=sanket
Sun Oct 5 09:58:48.970 [initandlisten] db version v2.4.9
Sun Oct 5 09:58:48.970 [initandlisten] git version: nogitversion
Sun Oct 5 09:58:48.970 [initandlisten] build info: Linux orlo 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 17:37:58 UTC 2013 x86_64 BOOST_LIB_VERSION=1_54
Sun Oct 5 09:58:48.970 [initandlisten] allocator: tcmalloc
Sun Oct 5 09:58:48.970 [initandlisten] options: {}
Sun Oct 5 09:58:49.101 [initandlisten] journal dir=/data/db/journal
Sun Oct 5 09:58:49.102 [initandlisten] recover : no journal files present, no recovery needed
Sun Oct 5 09:58:49.237 [initandlisten] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Sun Oct 5 09:58:49.237 [websvr] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:28017
Sun Oct 5 09:58:49.237 [initandlisten] ERROR: addr already in use
Sun Oct 5 09:58:49.237 [websvr] ERROR: addr already in use
Sun Oct 5 09:58:49.237 [initandlisten] now exiting
Sun Oct 5 09:58:49.237 dbexit:
Sun Oct 5 09:58:49.237 [initandlisten] shutdown: going to close listening sockets...
Sun Oct 5 09:58:49.237 [initandlisten] shutdown: going to flush diaglog...
Sun Oct 5 09:58:49.237 [initandlisten] shutdown: going to close sockets...
Sun Oct 5 09:58:49.237 [initandlisten] shutdown: waiting for fs preallocator...
Sun Oct 5 09:58:49.237 [initandlisten] shutdown: lock for final commit...
Sun Oct 5 09:58:49.237 [initandlisten] shutdown: final commit...
Sun Oct 5 09:58:49.328 [initandlisten] shutdown: closing all files...
Sun Oct 5 09:58:49.328 [initandlisten] closeAllFiles() finished
Sun Oct 5 09:58:49.328 [initandlisten] journalCleanup...
Sun Oct 5 09:58:49.328 [initandlisten] removeJournalFiles
Sun Oct 5 09:58:49.390 [initandlisten] shutdown: removing fs lock...
Sun Oct 5 09:58:49.390 dbexit: really exiting now
sanket@sanket:~$
答案1
尝试这个 :
ps wuax | grep mongo
你应该看到类似这样的内容
Savio 10592 0.5 0.4 2719784 35624 ?? S 7:34pm 0:09.98 mongod
Savio 10911 0.0 0.0 2423368 184 s000 R+ 8:24pm 0:00.00 grep mongo
或者查找单词 mongod。
进而
sudo kill 10592
之后再次启动 mongod。对我来说,它起作用了,因为错误地址已经被使用。
答案2
服务器似乎已启动错误的用户,并且无法访问其数据文件。
您是如何启动它的?
您是以自己的用户身份从 shell 运行它,还是以服务身份运行它?
查看数据目录的所有者 - 这是它需要以之运行的用户。
命令
ls -ld /data /data/db /data/db/journal
将向用户显示(使用三个目录,因为我不知道哪个可读。)
嗯...所以,/data/db
归 userer 所有mongodb
- 看起来是对的。
但在里面,/data/db/journal
归root
。我觉得不对。
尝试一下sudo chown -R mongodb:mongodb /data/db/journal
,那么/data/db/journal
其中的所有文件都归 mongodb 用户所有。
但其中有一个独立的问题,您需要先修复它:
sudo
不起作用并显示错误sudo: unable to resolve host sanket-PC
,这意味着您目前没有 root 访问权限。请参阅运行 sudo 时出现错误消息:无法解析主机(无)。
您进行了编辑,替换了整个问题文本 - 但并未说明更改了什么,因此这个问题是有意义的。
查看日志,有一个有趣的错误:
数据库尝试启动,并发现用于监听客户端连接的网络端口已被使用:
Sun Oct 5 09:58:49.237 [initandlisten] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Sun Oct 5 09:58:49.237 [websvr] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:28017
Sun Oct 5 09:58:49.237 [initandlisten] ERROR: addr already in use
Sun Oct 5 09:58:49.237 [websvr] ERROR: addr already in use
端口的选择使得通常没有人将其用于其他用途;这意味着很可能mongod
正在使用该端口 - 意味着已有一个实例正在运行。
尝试pgrep -fa mongod
显示正在运行的mongod
进程。
(除此之外,尚不清楚原始问题是否已得到修复。由于没有日志文件,因此不可能导致此处的原始错误。)