在Mac上,MongoDB数据库的位置是什么?

114

我对Mac和MongoDB都比较陌生。

我的一个奇怪疑问是如何访问在Mac上使用MongoDB创建的数据库?

我知道在Windows中有一个名为c:\data\db的文件夹,里面存储了我的数据库文件。

在Mac上,数据库存储在哪里?如何访问?

我记得之前做过一些类似的事情。

sudo mkdir -p /data/db
sudo chown `id -u` /data/db

我想在Mac上创建这样的文件夹,但是我没有在这个文件夹中找到任何数据库文件,尽管我已经创建了一个数据库。

数据库文件保存在Mac的哪里?

非常感谢您的任何帮助。


请注意:https://dev59.com/a2cs5IYBdhLWcg3wk06X#67043090 - Wernfried Domscheit
6个回答

257
如果在 macOS 上通过 Homebrew 安装了 MongoDB,则默认的数据目录取决于系统中处理器的类型。
Intel 处理器 Apple Silicon 处理器(M1、M2 等)
数据目录 /usr/local/var/mongodb /opt/homebrew/var/mongodb
配置文件 /usr/local/etc/mongod.conf /opt/homebrew/etc/mongod.conf
日志目录 /usr/local/var/log/mongodb /opt/homebrew/var/log/mongodb
运行 brew --prefix 命令以查看 Homebrew 安装这些文件的位置。
有关详细信息,请参阅 MongoDB "在 macOS 上安装" 文档。

我在寻找一些光明,通过查看 https://github.com/Homebrew/homebrew/blob/master/Library/Formula/mongodb.rb 上的公式,谢谢。 - alexserver
5
在更新版本的Homebrew中,它是/opt/homebrew/var/mongodb - JW.
1
感谢@JW。我更新了答案,包括我在MongoDB文档中发现的内容。如果您发现需要更新的其他内容,请告诉我。 - Mark Edington
谢谢,我只需要M1版本~ - Ali

165

感谢 @Mark,我一直都忘记这个问题。 使用Homebrew安装MongoDB后:

  • 数据库存储在 /usr/local/var/mongodb/ 目录下
  • mongod.conf 文件位于 /usr/local/etc/mongod.conf
  • MongoDB 日志可在 /usr/local/var/log/mongodb/ 找到
  • MongoDB 二进制文件位于 /usr/local/Cellar/mongodb/[version]/bin

1
这一点非常准确。谢谢。 - Mark Pieszak - Trilon.io
2
当我检查 /usr/local/var/mongodb/ 时,目录是空的。而且,我没有更改mongoldb的默认dbpath。你能帮我找到数据库文件吗? - Nishi Bangar
为其添加一个符号链接:sudo ln -s /usr/local/var/mongodb /data/db - TheJeff
我在/usr/local/目录下似乎没有etc文件夹。配置文件在哪里或者我该如何找到它们呢?哈哈 - Reinier68

101

MongoDB的默认数据目录是/data/db

可以通过在命令行或配置文件中指定dbpath选项来覆盖它。

如果使用Homebrew或MacPorts等软件包管理器安装MongoDB,这些安装通常会创建一个默认的数据目录,而不是/data/db,并在配置文件中设置了dbpath。

如果在启动时向mongod提供了dbpath,则可以在mongo shell中检查其值:

db.serverCmdLineOpts()

你会看到一个值,如下所示:

"parsed" : {
    "dbpath" : "/usr/local/data"
},

1
值得注意的是,您的mongod服务器不必作为root用户运行。您需要确保您的数据目录权限包括对mongod服务器使用的用户帐户的读/写访问权限。 - Stennie
1
当我输入getCommandLineOpts()时,我得到了类似于`ReferenceError: getCommandLineOpts is not defined (shell):1´的东西。有什么帮助吗? - Spaniard89
4
你使用的是什么版本的MongoDB?你可以通过db.serverStatus().version来检查。我相信用于getCommandLineOpts()的shell助手是在MongoDB 2.0中添加的。你也可以尝试:db.getSiblingDB("admin").runCommand({getCmdLineOpts:1}) - Stennie
@Stennie 你的建议有效。db.getSiblingDB("admin").runCommand({getCmdLineOpts:1}) 有人愿意编辑这个答案使它更加清晰明了吗? - kgpdeveloper
@kgpdeveloper:使用更短的语法进行了更新:db.adminCommand("getCmdLineOpts")。 - Stennie
显示剩余3条评论

30

我遇到了同样的问题,版本号是3.4.2。

如果你是用Homebrew安装的话,运行这个进程的命令如下:

$ mongod --dbpath /usr/local/var/mongodb

这个解决方案在通过Homebrew升级到v4.2.5后解决了我的问题。 - Matthias Hagemann

10

9
这是如果您直接从终端启动mongod。如果您使用brew services start mongodb,则该进程将使用位于/usr/local/etc/mongod.conf的配置文件,该配置文件指定了dbPath/usr/local/var/mongodb - Molomby
感谢@Molomby的贡献。我开始并不是这样,甚至不知道这种方法。 :) - csonuryilmaz

1

环境: macOS Mojave 10.14.4

安装: homebrew

Location:/usr/local/Cellar/mongodb/4.0.3_1

注意:如果使用brew upgrade mongo升级版本,则文件夹4.0.4_1将被删除并替换为新版本文件夹。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接