Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Mongod抱怨没有/data/db文件夹_Macos_Mongodb - Fatal编程技术网

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

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

今天我第一次使用我的新mac电脑。在创建/data/db目录之前,我一直遵循mongodb.org上的入门指南。顺便说一句,我用的是自制的路线

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

所以我做了一个

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