Mongod 服务器由于以下错误无法运行

Mongod 服务器由于以下错误无法运行
   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/journalroot。我觉得不对。

尝试一下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进程。

(除此之外,尚不清楚原始问题是否已得到修复。由于没有日志文件,因此不可能导致此处的原始错误。)

相关内容