小编典典

Mongod 抱怨没有 /data/db 文件夹

all

我今天第一次使用我的新 Mac。我一直遵循 mongodb.org 上的入门指南,直到创建 /data/db 目录的步骤。顺便说一句,我使用了自制路线。

所以我打开一个终端,我想我在你所谓的主目录中,因为当我执行“ls”时,我会看到桌面应用程序电影音乐图片文档和库的文件夹。

所以我做了一个

mkdir -p /data/db

首先,它说权限被拒绝。我一直在尝试不同的东西半小时,最后:

mkdir -p data/db

工作。当我“ls”时,确实存在一个数据目录并嵌套在其中一个db文件夹。

然后我启动了 mongod,它抱怨找不到数据/数据库

我做错了什么吗?

现在我已经完成了

sudo mkdir -p /data/db

当我执行“ls”时,我确实看到了数据目录和数据库目录。但是在 db 目录中,里面绝对没有任何东西,当我现在运行 mongod

Sun Oct 30 19:35:19 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Sun Oct 30 19:35:19 dbexit: 
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close listening sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to flush diaglog...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: waiting for fs preallocator...
Sun Oct 30 19:35:19 [initandlisten] shutdown: lock for final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: closing all files...
Sun Oct 30 19:35:19 [initandlisten] closeAllFiles() finished
Sun Oct 30 19:35:19 [initandlisten] shutdown: removing fs lock...
Sun Oct 30 19:35:19 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Sun Oct 30 19:35:19 dbexit: really exiting now

编辑获取错误消息

sudo chown mongod:mongod /data/db

chown: mongod: Invalid argument

感谢大家!


阅读 162

收藏
2022-03-10

共1个答案

小编典典

您在错误的位置创建了目录

/data/db 表示它直接位于“/”根目录下,而您创建的“data/db”(没有前导 /)可能只是在另一个目录中,例如“/root”主目录。

您需要以 root 身份创建此目录

要么你需要使用sudo,例如sudo mkdir -p /data/db

或者您需要su -成为超级用户,然后使用mkdir -p /data/db


笔记:

MongoDB 还有一个选项,您可以在另一个位置创建数据目录,但这通常不是一个好主意,因为它只是稍微复杂化了诸如数据库恢复之类的事情,因为您总是必须手动指定
db-path。我不建议这样做。


编辑:

您收到的错误消息是 “无法创建/打开锁定文件:/data/db/mongod.lock errno:13 Permission denied”
。您创建的目录似乎没有正确的权限和所有权——它需要由运行 MongoDB 进程的用户可写。

要查看“/data/db/”目录的权限和所有权,请执行以下操作:(权限和所有权应该是这样的)

$ ls -ld /data/db/
drwxr-xr-x 4 mongod mongod 4096 Oct 26 10:31 /data/db/

左侧“drwxr-xr-x”显示用户、组和其他人的权限。’mongod mongod’
显示谁拥有该目录,以及该目录属于哪个组。在这种情况下,两者都被称为“mongod”。

如果您的“/data/db”目录没有上述权限和所有权,请执行以下操作

首先检查您的 mongo 用户拥有的用户和组:

# grep mongo /etc/passwd
mongod:x:498:496:mongod:/var/lib/mongo:/bin/false

您应该在 /etc/passwd 中有一个 mongod 条目,因为它是一个守护进程。

sudo chmod 0755 /data/db
sudo chown -R 498:496 /data/db    # using the user-id , group-id

您还可以使用用户名和组名,如下所示:(它们可以在 /etc/passwd 和 /etc/group 中找到)

sudo chown -R mongod:mongod /data/db

那应该使它工作..

在下面的评论中,有些人使用了这个:

sudo chown -R `id -u` /data/db
sudo chmod -R go+w /data/db

要么

sudo chown -R $USER /data/db 
sudo chmod -R go+w /data/db

缺点是 $USER 是一个具有登录 shell 的帐户。出于安全原因,理想情况下,守护进程不应该有外壳,这就是您在上面密码文件的 grep 中看到
/bin/false 的原因。

在这里查看以更好地理解目录权限的含义:

http://www.perlfect.com/articles/chmod.shtml

也许还可以查看您可以通过 Google 找到的教程之一:“UNIX 初学者”

2022-03-10