我今天第一次使用我的新 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
感谢大家!
您在错误的位置创建了目录
/data/db 表示它直接位于“/”根目录下,而您创建的“data/db”(没有前导 /)可能只是在另一个目录中,例如“/root”主目录。
您需要以 root 身份创建此目录
要么你需要使用sudo,例如sudo mkdir -p /data/db
sudo
或者您需要su -成为超级用户,然后使用mkdir -p /data/db
su -
笔记:
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 初学者”