【发布时间】:2022-02-13 17:08:43
【问题描述】:
我收到关于dbpath (/data/db/) does not exist 的错误,但/etc/mongodb.conf 将其命名为dbpath = /var/lib/mongodb.
那么,MongoDB 的默认 dbpath 是哪个?
【问题讨论】:
标签: mongodb
我收到关于dbpath (/data/db/) does not exist 的错误,但/etc/mongodb.conf 将其命名为dbpath = /var/lib/mongodb.
那么,MongoDB 的默认 dbpath 是哪个?
【问题讨论】:
标签: mongodb
mongodb 的默认 dbpath 是/data/db。
没有默认配置文件,因此您需要在启动 mongod 时指定此文件:
mongod --config /etc/mongodb.conf
.. 或使用 MongoDB 的打包安装(例如 Redhat 或 Debian/Ubuntu),这将在服务定义中包含配置文件路径。
注意:要检查正在运行的 mongod 的 dbpath 和命令行选项,请通过 mongo shell 连接并运行:
db.serverCmdLineOpts()
特别是,如果设置了自定义 dbpath,它将是以下值:
db.serverCmdLineOpts().parsed.dbpath // MongoDB 2.4 and older
db.serverCmdLineOpts().parsed.storage.dbPath // MongoDB 2.6+
【讨论】:
我在 Ubuntu 上安装了 2.0.7 版本,它默认为 /var/lib/mongodb/,这也是我的 /etc/mongodb.conf 文件中的内容。
【讨论】:
mongodb:the definitive guide这本书说它默认为/data/db?我不知道为什么。
apt-get 安装了我的副本。你是如何安装你的副本的?您是否仍然收到有关 dbpath 不存在的错误?
【讨论】:
我取决于版本和发行版。
例如,从 MongoDB 站点默认下载 pre-2.2 使用:/data/db,但 Ubuntu 安装在某一时刻使用:var/lib/mongodb。
我认为这些现在已经标准化,因此 2.2+ 将仅使用 data/db,无论是来自网站上的直接下载还是来自 repos。
【讨论】:
mongod,您将获得/data/db 的默认dbpath(唯一硬编码的默认值)。
Mongo 中的 dbPath 可能会令人困惑。如果您根本没有指定dbPath(既不作为命令行参数也不在mongod.conf 文件中),那么它默认为
/data/db 在 Linux 和 macOS 上\data\db 在 Windows 上(在当前驱动器上)但是,安装时附带的 default mongod.conf 文件使用这些文件:
| Platform | Package Manager | Default storage.dbPath
|
|---|---|---|
| RHEL / CentOS and Amazon | yum | /var/lib/mongo |
| SUSE | zypper | /var/lib/mongo |
| Ubuntu and Debian | apt | /var/lib/mongodb |
| macOS | brew | /usr/local/var/mongodb |
| Windows | MSI | C:\Program Files\MongoDB\Server\{release}\data\ |
所以,你必须仔细检查你在使用什么。
【讨论】:
Windows x64 安装程序在安装程序 UI/向导中显示路径。
您可以通过打开您的mongod.cfg 文件来确认它稍后使用的路径。我的mongod.cfg 位于此处C:\Program Files\MongoDB\Server\4.0\bin\mongod.cfg(更改为您的 MongoDB 版本!
当我打开我的mongd.cfg 时,我发现了这一行,显示了默认的数据库路径:
dbPath: C:\Program Files\MongoDB\Server\4.0\data
但是,这在尝试运行 mongod 时导致了一个错误,它仍然期望找到 C:\data\db:
2019-05-05T09:32:36.084-0700 I STORAGE [initandlisten] exception in initAndListen: NonExistentPath: Data directory C:\data\db\ not found., terminating
您可以将mongod 传递给--dbpath=... 参数。就我而言:
mongod --dbpath="C:\Program Files\MongoDB\Server\4.0\data"
【讨论】: