我最近升级了我的 apt-get,现在 mongod 运行不正常。
我目前必须通过以下方式运行:mongod --dbpath /var/lib/mongodb
并保持终端打开以使其正常工作。
如果我只是运行 mongod
root@ip-XXX-XX-XX-XX:/home/ubuntu# mongod
mongod --help for help and startup options
Sun Jun 22 21:48:19.403 [initandlisten] MongoDB starting : pid=2033 port=27017 dbpath=/data/db/ 64-bit host=ip-XXX-XX-XX-XX
Sun Jun 22 21:48:19.403 [initandlisten] db version v2.4.10
Sun Jun 22 21:48:19.403 [initandlisten] git version: e3d78955d181e475345ebd60053a4738a4c5268a
Sun Jun 22 21:48:19.403 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Sun Jun 22 21:48:19.403 [initandlisten] allocator: tcmalloc
Sun Jun 22 21:48:19.403 [initandlisten] options: {}
Sun Jun 22 21:48:19.404 [initandlisten] exception in initAndListen: 10296
*********************************************************************
ERROR: dbpath (/data/db/) does not exist.
Create this directory or give existing directory in --dbpath.
See http://dochub.mongodb.org/core/startingandstoppingmongo
*********************************************************************
, terminating
Sun Jun 22 21:48:19.404 dbexit:
Sun Jun 22 21:48:19.404 [initandlisten] shutdown: going to close listening sockets...
Sun Jun 22 21:48:19.404 [initandlisten] shutdown: going to flush diaglog...
Sun Jun 22 21:48:19.404 [initandlisten] shutdown: going to close sockets...
Sun Jun 22 21:48:19.404 [initandlisten] shutdown: waiting for fs preallocator...
Sun Jun 22 21:48:19.404 [initandlisten] shutdown: lock for final commit...
Sun Jun 22 21:48:19.404 [initandlisten] shutdown: final commit...
Sun Jun 22 21:48:19.404 [initandlisten] shutdown: closing all files...
Sun Jun 22 21:48:19.405 [initandlisten] closeAllFiles() finished
Sun Jun 22 21:48:19.405 dbexit: really exiting now
root@ip-XXX-XX-XX-XX:/home/ubuntu#
我推测它使用了不同的配置文件,但我不知道它使用的是哪个配置文件。我希望 mongo 能够自动运行并使用正确的配置。
同样值得注意的是,如果我这样做:
sudo service mongodb start
我得到:mongodb start/running, process 2044
但任何使用 mongo 的页面都会出现以下错误:
Failed to connect to: 127.0.0.1:27017: Connection refused.
答案1
运行时出现错误mongod
是因为默认数据库路径是/data/db
(即它不是另一个配置文件,只是您不指定任何内容时得到的路径)。您似乎mongod
以 root 身份运行,这通常不是一个好主意,并且可能是问题的根源。如果您启动该服务,它将以用户身份运行(通常mongod
或mongodb
),因此如果现在有文件dbpath
归 root 用户所有(类似地,您的日志文件现在可能归 root 所有),那么它将无法启动并出现权限错误。
您可能需要修复您的权限,如这个答案来修复这个问题,并且一般来说应该避免mongod
在将来以 root 身份运行。
答案2
确保您的dbpath
目录存在并且可以访问mongodb
。这对我来说有效:
chown mongodb:mongodb /var/lib/mongodb -R
替换/var/lib/mongodb
为您的dbpath
目录。