为什么Mongo不读取/usr/local/mongodb/mongod.conf文件?

时间:2011-09-14 13:32:48

标签: macos mongodb

在我的/usr/local/mongodb/mongod.conf文件中,我有

# Store data alongside MongoDB instead of the default, /data/db/
dbpath = /usr/local/mongodb_data

# Only accept local connections
bind_ip = 127.0.0.1

但是当我尝试运行Mongo(在我的Mac上)时,我收到一个错误:

Wed Sep 14 09:29:35 [initandlisten] exception in initAndListen std::exception: dbpath (/data/db/) does not exist, terminating

显然conf文件没有被读取

4 个答案:

答案 0 :(得分:28)

如果使用brew安装MongoDB,它为您生成的LaunchAgent文件将默认使用/usr/local/etc/mongod.conf中的配置文件。

此行为定义于:

https://github.com/Homebrew/homebrew/blob/master/Library/Formula/mongodb.rb

请注意,此"默认"仅在通过launchctl将MongoDB作为服务运行时适用,而不是通过运行mongodb手动启动它。

截至2015-03-09,安装MongoDB 3.0.0后Homebrew提供的说明是:

==> Caveats
To reload mongodb after an upgrade:
    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
Or, if you don't want/need launchctl, you can just run:
    mongod --config /usr/local/etc/mongod.conf

请注意手动运行命令中的显式--config参数。

答案 1 :(得分:7)

您必须指定是否要使用其他配置;没有默认配置文件。

见这里: File Based Configuration

实现你想做的事;您可以指定配置路径或启动您的mongo服务器,如:

mongod --dbpath /usr/local/mongodb_data

答案 2 :(得分:1)

我希望能够输入mongod并让它正常工作。这有效,但需要注意:

% sudo mkdir /data
% sudo ln -s /usr/local/var/mongodb /data/db

请注意,自制软件默认的/usr/local/etc/mongod.conf中有一些有用的配置。这是参考文件:

systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /usr/local/var/mongodb
net:
  bindIp: 127.0.0.1

因此,它将登录到控制台,并且连接不会被限制为localhost。

注意:在@ ballPointPenguin的帖子中,现在Homebrew有brew services,这是一个很好的选择。

答案 3 :(得分:1)

如@ davidmc24所指出的,默认情况下,从launchctl启动时,mongo的自制软件安装将使用配置文件。只需使用:

brew services start mongodb

您可以在(默认位置)跟踪日志:

tail -f /usr/local/var/log/mongodb/mongo.log