如何解决MongoDB实例化失败问题

118

我按照MongoDb的文档设置了我的第一个MongoDb。

当我使用命令启动MongoDB时

C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe

我收到了下面的错误

exception in initAndListen: 29 Data directory C:\data\db\ not found., terminating 
shutdown: going to close listening sockets...
shutdown: going to flush diaglog...
now exiting
shutting down with code:100 
19个回答

203

MongoDB需要一个文件夹来存储数据库。创建一个 C:\data\db\ 目录:

mkdir C:\data\db

然后启动MongoDB:

C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe
有时由于先前的安装,C:\data\db文件夹已经存在。如果因此mongod.exe无法工作,则可以删除C:\data\db文件夹中的所有内容,并再次执行mongod.exe

如果您查看错误的详细信息,会发现有一行显示目录 C:\data\db\ 未找到。请使用命令 mkdir C:\data\db 创建该目录。 - cespon
@cespon 金标签.. :P - Aravind
我的实际路径是/mongodb_data/db - Fabricio
确保数据目录和文件的所有者是mongodb用户和组(在Linux上)。 - PeterM
它可以在d:/目录下工作吗?因为"mongod"命令在c:/驱动器上运行得很好,但当我在d:/驱动器上运行它时,它会在显示一些错误后关闭。我已经设置了"C:/data/db/"文件夹。我们不能在任何目录下全局运行该命令吗? - Rushi Kadivar

81

针对 macOS 用户修复此问题:

您需要按照以下步骤进行操作:

创建“db”目录。这是Mongo数据文件的存放位置。您可以通过运行以下命令在默认位置创建目录:

sudo mkdir -p /data/db

确保运行以下命令以检查 /data/db 目录的权限是否正确:

sudo chown -R `id -un` /data/db

现在你已经准备好了,可以通过运行sudo mongod来启动Mongo服务器。

如果你只运行mongod是不起作用的。

来源


8
在Ubuntu 16.04中相同。 - Manoj Rana
6
当我运行第一个命令时,出现了 mkdir: /data/db: Read-only file system 的错误提示。我该如何修复这个问题?谢谢。 - L C
1
我和 @LC 在这里提到的问题相同,首先我执行了:sudo mkdir -p /data/db,然后出现了:mkdir: /data/db: Read-only file system,然后我执行了:sudo chown -R `id -un` /data/db,然后出现了:chown: /data/db: No such file or directory,有人能帮我解决吗? - Tony Lucas

25

我在使用Brew的Mac上遇到了同样的问题,解决方法是:

sudo mongod  

请注意,文档 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/?_ga=2.112030212.1812901370.1536869187-316348816.1536869187 中提到了安装 MongoDB 的步骤。 - Rizwan Atta
1
旧方案不起作用。请使用@ahmedSanad的解决方案。 - Parsa Noori

25

对于 macOS 用户,请注意以下问题:

如果您使用.tgz Tarball在 macOS 上安装 MongoDB Community

(从 macOS 10.15 Catalina 开始,苹果限制了对 MongoDB 默认数据目录 /data/db 的访问。在 macOS 10.15 Catalina 上,您必须使用不同的数据目录,例如 /usr/local/var/mongodb。)

您可以按照以下步骤解决此问题:

(适用于 MacOS Catalina 及以上版本)

出于安全考虑,Apple 在 Catalina 中创建了一个新卷。如果您使用的是 Catalina,则需要在 System/Volumes/Data 中创建 /data/db 文件夹。

请使用以下命令:

sudo mkdir -p /System/Volumes/Data/data/db

然后,使用此命令授予权限:

sudo chown -R `id -un` /System/Volumes/Data/data/db

这将替换正常

sudo mkdir -p /data/db

通过运行以下命令,确保 /data/db 目录具有正确的权限:

sudo chown -R `id -un` /data/db

完成 MongoDB 的安装和启动后,您可以在终端中使用以下命令:

sudo mongod --dbpath /System/Volumes/Data/data/db

第一部分真的帮了我。谢谢! - Vinicius Alcantara

19

要在Windows中更改默认的db文件夹C:\data\db,请使用以下命令:

--dbpath

例如:
\mongod --dbpath C:\myfolder

7

Mac用户

不要使用以下命令来运行MongoDB:

sudo mongod

你可以使用mongod代替,如果你:

  1. 找到mongodb数据文件夹的位置(通常为~/data)
  2. 使用sudo chmod -R ugo+rw data添加读写权限

如果你需要在运行MongoDB时使用sudosudo mongod),那么这意味着你没有mongodb数据文件夹的读写权限。


1
谢谢。我不得不添加读写权限到 /data。我不明白我做错了什么,但我已经将我的数据文件夹设置为~/Applications/mongodb/data。 - vinsentos

5
请按以下步骤操作:
  1. 如其他朋友所提到的,您应该先创建一个目录来存储数据库数据。此文件夹可以是以下内容:

    C:\mongo-data

  2. 在命令行中导航到您安装mongodb和mongod.exe所在的位置。在我的情况下,完整路径为:

    C:\Program Files\MongoDB\Server\3.4\bin

  3. 从这里使用--dbpath标志运行mongod.exe,并将其传递给第一步中创建的文件夹的路径,如下所示:

    mongod.exe --dbpath "C:\mongo-data"

请注意:如果您使用的是Windows系统,则必须使用双引号("")才能正常运行上述命令。

通过这种方式,您将得到类似以下内容的结果:
2017-06-14T12:45:59.892+0430 I NETWORK  [thread1] waiting for connections on port 27017

如果你在Windows系统中使用单引号(' '),你会得到以下结果:

2017-06-14T01:13:45.965-0700 I CONTROL  [initandlisten] shutting down with code:100

希望这有助于解决问题。

3

要使用mongod命令运行Mongo DB守护进程,您需要一个数据库目录,可能需要运行以下命令:

mkdir C:\data\db

此外,MongoDB需要在该目录拥有写入权限,或者以超级用户权限运行,例如:sudo mongod

2

1.如果显示错误(代码100关闭),这意味着它找不到文件的所需位置。

1.a 如果是在macOS Catalina之前,则使用sudo mkdir -p /data/db创建目录并授予权限以使用它
sudo chown -R id-un/data/db。

1.b 如果是在macOS Catalina之后,则创建sudo mkdir -p /System/Volumes/data/db并授予权限
sudo chown -R id-un/System/Volumes/data/db。

2.启动mongo db酿造服务运行mongodb-community

3.键入mongod或mongod --dbpath /System/Volumes/Data/data/db

4.如果mongod显示错误(代码48关闭),则
这意味着端口已被使用,因此您可以做两件事情

4.a 要么通过指定端口号更改mongod的端口
mongod --dbpath /System/Volumes/Data/data/db —port 27018。

4.b 或者你可以通过找到占用该端口的进程并使用命令
sudo lsof -i :27017 杀死该进程
kill -9

5.重复步骤2和3。


1

首先,您需要创建数据目录,MongoDB在其中存储数据。 MongoDB的默认数据目录路径是从启动MongoDB的驱动器上的绝对路径\data\db。

如果您安装在C:/驱动器上,则必须创建data\db目录。要执行此操作,请在cmd中运行命令。

C:\>mkdir data\db

要启动MongoDB,请运行mongod.exe。

"C:\Program Files\MongoDB\Server\4.2\bin\mongod.exe" --dbpath="c:\data\db"

--dbpath选项指向您的数据库目录。 在此输入图片描述 连接到MongoDB。
"C:\Program Files\MongoDB\Server\4.2\bin\mongo.exe"

检查所有工作是否正常:

show dbs

enter image description here


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