我在我的Ubuntu 13.04上安装了MondoDB,并尝试通过键入mongod
或sudo mongod
来运行其守护程序,但我遇到了以下消息:
mongod --help for help and startup options
Thu Jun 27 05:11:02 [initandlisten] MongoDB starting : pid=11685 port=27017 dbpath=/data/db/ 64-bit host=myhost
Thu Jun 27 05:11:02 [initandlisten] db version v2.2.4, pdfile version 4.5
Thu Jun 27 05:11:02 [initandlisten] git version: nogitversion
Thu Jun 27 05:11:02 [initandlisten] build info: Linux batsu 3.2.0-37-generic #58-Ubuntu SMP Thu Jan 24 15:28:10 UTC 2013 x86_64 BOOST_LIB_VERSION=1_49
Thu Jun 27 05:11:02 [initandlisten] options: {}
Thu Jun 27 05:11:02 [initandlisten] journal dir=/data/db/journal
Thu Jun 27 05:11:02 [initandlisten] recover : no journal files present, no recovery needed
Thu Jun 27 05:11:02 [initandlisten] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Thu Jun 27 05:11:02 [websvr] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:28017
Thu Jun 27 05:11:02 [websvr] ERROR: addr already in use
Thu Jun 27 05:11:02 [initandlisten] ERROR: addr already in use
Thu Jun 27 05:11:02 [initandlisten] now exiting
Thu Jun 27 05:11:02 dbexit:
Thu Jun 27 05:11:02 [initandlisten] shutdown: going to close listening sockets...
Thu Jun 27 05:11:02 [initandlisten] shutdown: going to flush diaglog...
Thu Jun 27 05:11:02 [initandlisten] shutdown: going to close sockets...
Thu Jun 27 05:11:02 [initandlisten] shutdown: waiting for fs preallocator...
Thu Jun 27 05:11:02 [initandlisten] shutdown: lock for final commit...
Thu Jun 27 05:11:02 [initandlisten] shutdown: final commit...
Thu Jun 27 05:11:02 [initandlisten] shutdown: closing all files...
Thu Jun 27 05:11:02 [initandlisten] closeAllFiles() finished
Thu Jun 27 05:11:02 [initandlisten] journalCleanup...
Thu Jun 27 05:11:02 [initandlisten] removeJournalFiles
Thu Jun 27 05:11:02 [initandlisten] shutdown: removing fs lock...
Thu Jun 27 05:11:02 dbexit: really exiting now
但是,当我尝试通过键入mongo
来运行MongoDB时,即使没有运行它的守护进程,似乎我可以成功使用MongoDB。我没有启动任何守护进程,而且我的终端只有一个窗口,所以同时运行守护进程和主mongo程序是不可能的......
所以问题是,为什么我可以在不启动任何守护进程的情况下使用MongoDB?当我在OS X上使用MongoDB时,我总是必须在使用MongoDB之前运行守护进程。为了您的信息,我在OS X 10.8上通过Parallels 8安装了Ubuntu 13.04,并按照官方文档解释的相同路线安装了MongoDB。
或者因为我在OS X端口27017上使用MongoDB,所以我不必在Virtual Ubuntu上运行守护进程? (虽然我现在不在OS X上运行守护进程......)
答案 0 :(得分:9)
当您安装mongo时,它应该已经为您运行服务器。
事实证明,“addr已经在使用中”(这意味着某些东西在mongod端口上运行)以及您可以成功使用它的事实。
您还可以通过运行ps wuax | grep mongo
并在结果列表中查找mongod来测试这一点 - 这会列出您计算机上运行的所有进程,然后从此列表中删除任何未提及mongo的内容。您可能还会看到一行中包含“grep”的行 - 这是您当前正在运行的命令,您可以忽略该命令。
当我在计算机上运行时,会显示:
mongodb 22394 9.1 1.0 109244 33592 ? Dsl 08:29 0:01 /usr/bin/mongod --config /etc/mongodb.conf
1001 22423 0.0 0.0 9436 904 pts/3 S+ 08:29 0:00 grep --color=auto mongo
答案 1 :(得分:0)
Mongod服务正在运行,尝试使用sudo命令停止它并使用sudo命令启动mongod
sudo service mongodb stop
sudo mongod
答案 2 :(得分:0)
默认情况下,MongoDB将数据存储在/data/db directory
中。在Windows上,MongoDB将数据存储在C:\data\db
中。在所有平台上,MongoDB都会侦听来自端口27017
上的客户端的连接。
要使用所有默认值启动MongoDB,请在系统shell中发出以下命令:
的mongod
在干净关机中,mongod完成所有待处理操作,将所有数据刷新到数据文件,并关闭所有数据文件。其他关闭是不洁净的,可能会损害数据文件的有效性。
要确保干净关闭,请始终使用以下方法之一关闭mongod实例:
使用shutdownServer()
使用db.shutdownServer()
方法从mongo shell关闭mongod,如下所示:
使用admin
db.shutdownServer()
从init脚本调用相同的方法可以实现相同的结果。
对于启用了授权的系统,用户只能在对管理数据库进行身份验证时发出db.shutdownServer(),或者在未启用身份验证的系统上通过localhost接口发出。
使用--shutdown
在Linux命令行中,使用以下命令中的--shutdown
选项关闭mongod:
mongod --shutdown