Macos Mongod抱怨没有/data/db文件夹
今天我第一次使用我的新mac电脑。在创建/data/db目录之前,我一直遵循mongodb.org上的入门指南。顺便说一句,我用的是自制的路线 所以我打开一个终端,我想我在你所谓的主目录,因为当我做“ls”时,我会看到桌面应用程序电影、音乐图片、文档和库的文件夹 所以我做了一个Macos Mongod抱怨没有/data/db文件夹,macos,mongodb,Macos,Mongodb,今天我第一次使用我的新mac电脑。在创建/data/db目录之前,我一直遵循mongodb.org上的入门指南。顺便说一句,我用的是自制的路线 所以我打开一个终端,我想我在你所谓的主目录,因为当我做“ls”时,我会看到桌面应用程序电影、音乐图片、文档和库的文件夹 所以我做了一个 mkdir -p /data/db 首先,它说许可被拒绝。我不断地尝试不同的东西半个小时,最后: mkdir -p data/db 成功了。当I“ls”时,数据目录和嵌套在其中的db文件夹确实存在 然后我启动mong
mkdir -p /data/db
首先,它说许可被拒绝。我不断地尝试不同的东西半个小时,最后:
mkdir -p data/db
成功了。当I“ls”时,数据目录和嵌套在其中的db文件夹确实存在
然后我启动mongod,它抱怨找不到数据/db
我做错什么了吗
现在我已经完成了任务
sudo mkdir -p /data/db
当我做一个“ls”时,我确实看到了data dir和db dir。但是在db dir中,绝对没有任何内容,当我现在运行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
谢谢大家 您的命令将在当前文件夹中创建目录结构,而不是计算机的根目录(缺少的
/
)
第一个命令是正确的,但由于您试图在受保护的目录/
中创建文件夹,因此需要在其前面加上sudo
,它是“超级用户do”的缩写。然后会要求您输入密码
因此,完整的命令将是:
$ sudo mkdir -p /data/db
您需要创建/data/db。。。这是根目录中名为/data/的目录(即/),其中的子文件夹名为/db/ 由于需要使用sudo在MacOS中的根目录中创建目录,因此会出现权限错误,sudo允许您以管理员身份运行命令 所以,运行这个来代替
$ sudo mkdir -p /data/db
这将提示您输入密码,该密码与您更改系统设置时使用的密码相同(例如,当您尝试在系统首选项中更改内容时打开的小对话框),可能与您登录时使用的密码相同。您在错误的位置创建了目录。 /data/db表示它直接位于“/”根目录下,而您创建的“data/db”(不带前导/)可能正好位于另一个目录中,例如“/root”homeditory
service mongod start
您需要将此目录创建为根目录
sudo mkdir -p /data/db
您需要使用sudo
,例如sudo mkdir-p/data/db
或者您需要执行su-
以成为超级用户,然后使用mkdir-p/data/db
注: MongoDB还提供了一个选项,您可以在另一个位置创建数据目录,但这通常不是一个好主意,因为它只是使诸如数据库恢复之类的事情稍微复杂一些,因为您总是需要手动指定数据库路径。我不建议这样做
编辑: 您收到的错误消息是“无法创建/打开锁文件:/data/db/mongod.lock errno:13权限被拒绝”。您创建的目录似乎没有正确的权限和所有权-- 它需要由运行MongoDB进程的用户编写 要查看“/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 `id -u` /data/db
sudo chmod -R go+w /data/db
或
缺点是$USER是一个具有登录shell的帐户。
出于安全原因,守护进程在理想情况下不应该有shell,这就是为什么您在上面密码文件的grep中看到/bin/false
检查此处以更好地理解目录权限的含义:
也许还可以通过Google查看其中一个教程:“UNIX初学者版”您正在尝试创建一个没有root访问权限的目录 为了测试mongodb,我只使用我的用户目录中的一个目录,如:
cd
mkdir -p temp/
mongod --dbpath .
在得到与Nik相同的错误后,这将从当前工作目录在temp/中创建mongo数据库 chown:id-u:无效参数 我发现这显然是因为使用了错误类型的引号(应该是反引号) 相反,我只是使用了 sudo chown$用户/数据/数据库
作为替代,现在mongod拥有了它所需的权限。我通过使用窗口管理器创建/data/db文件夹解决了这个完全相同的问题。我一开始试着通过终端来实现,为了在根目录中创建一个文件夹,我不得不使用sudo 我只是使用Finder进入根目录,并使用“new folder”创建了一个新文件夹。完全为我工作 注意:我正在使用OSX。请注意: 如果您尝试在不更改权限的情况下运行mongod,则在/data/db目录中可能会有一个mongod.lock文件(以及一些其他文件)。即使更改了/data/db目录的权限以授予$USER访问权限,您仍会继续出现“无法创建/打开锁定文件:/data/db/mongod.lock errno:13权限被拒绝”错误。运行ls-al/data/db,您可能会看到各个文件的权限仍然设置为root for
cd
mkdir -p temp/
mongod --dbpath .
sudo mkdir -p /data/db
sudo chmod +x+r+w /data/db/
sudo touch /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db
sudo chmod +x+r+w /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db/mongod.lock
./bin/mongod --dbpath ~/data/db
sudo chown -R $USER /data/db
sudo mkdir -p /data/db/
sudo chown `id -u` /data/db
mongod --config /etc/mongod.conf
storage:
dbPath: /var/lib/mongodb
brew install mongodb
$ brew services restart mongodb
cmdLine:Object
config:"/usr/local/etc/mongod.conf"
$ more /usr/local/etc/mongod.conf
systemLog:
destination: file
path: /usr/local/var/log/mongodb/mongo.log
logAppend: true
storage:
dbPath: /usr/local/var/mongodb
net:
bindIp: 127.0.0.1
brew services stop mongodb
brew services start mongodb
brew services start mongodb
service mongod start
service mongod status
"shutting down with code:100"
./mongod --dbpath=~/mongo-data
./mongod --dbpath ~/mongo-data
ps ax | grep mongod
sudo kill ps_number
sudo mongod --port 27018
sudo mkdir -p /data/db
sudo chown -R $USER /data
mongod
sudo chown -R 126:135 /data/db
sudo chown -R $USER /data/db
brew services start mongodb-community