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

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

所以我做了一个

mkdir -p /data/db

首先,它说许可被拒绝。我不停地尝试了半个小时,最后:

mkdir -p data/db

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

然后我启动mongod,它抱怨找不到data/db

我做错什么了吗?

现在我已经完成了

sudo mkdir -p /data/db

当我执行“ls”时,我确实看到了data dir和db dir。在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

谢谢,大家好!


当前回答

MongoDB可能会对dbPath文件夹感到困惑。

当你运行mongod而不使用dbpath时,默认路径是/data/db

然而,当你把它作为一个服务启动时,例如systemctl start mongod,它会读取配置文件,通常是/etc/mongod.cfg,在这个配置文件中,默认值是

Platform Package Manager Default storage.dbPath
RHEL / CentOS and Amazon yum /var/lib/mongo
SUSE zypper /var/lib/mongo
Ubuntu and Debian apt /var/lib/mongodb
macOS brew /usr/local/var/mongodb

因此,根据启动服务的方式,MongoDB会意外地尝试访问不同的数据文件夹。

其他回答

在根目录中创建目录

sudo mkdir -p /data/db

现在更改所有者

sudo chown -R $USER /data

你可以开始了!

mongod

而不是使用sudo mongod,你不需要每次都输入密码,但对于真正的项目你应该使用sudo mongod,不要给普通用户权限!

您正在尝试创建一个没有根访问权限的目录。

为了测试mongodb,我只使用我的用户目录中的一个目录:

cd
mkdir -p temp/
mongod --dbpath .

这将从您当前的工作目录中创建一个mongo数据库

从MongoDB 4.4开始,MongoDB数据库工具现在与MongoDB服务器分开发布。

您需要下载:https://www.mongodb.com/try/download/database-tools?tck=docs_databasetools

然后将所有文件复制到/usr/bin 所有的命令行都是可用的。

您的命令将在当前文件夹中创建目录结构,而不是计算机的根目录(即缺少的/)。

第一个命令是正确的,但是因为您试图在/目录下创建一个文件夹,这是一个受保护的目录,所以您需要在它前面加上sudo,这是“超级用户do”的缩写。然后你会被要求输入密码。

所以完整的命令是:

$ sudo mkdir -p /data/db

在得到和Nik一样的错误之后

chown: id -u:无效参数

我发现这显然是因为使用了错误类型的引号(应该是反引号)Ubuntu论坛

我只是用了

sudo chown $USER /data/db

作为一种替代,现在mongod有它需要的权限。