今天我第一次用我的新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

谢谢,大家好!


当前回答

这个解决办法解决了我的问题

创建一个目录 Sudo mkdir -p /data/db .使用实例 这将使一个目录命名为db,然后尝试用命令开始 sudo mongod

如果你在启动mongod时遇到其他错误或问题,你可能会发现问题as

设置listener: SocketException:地址已被使用失败 如果你发现另一个错误,那么你必须通过输入到terminal as来终止mongod的运行进程

ps ax | grep mongod
sudo kill ps_number

并找到mongod运行端口并终止进程。 另一种方法是在启动mongod as时创建一个特定的端口

sudo mongod --port 27018

其他回答

这个解决办法解决了我的问题

创建一个目录 Sudo mkdir -p /data/db .使用实例 这将使一个目录命名为db,然后尝试用命令开始 sudo mongod

如果你在启动mongod时遇到其他错误或问题,你可能会发现问题as

设置listener: SocketException:地址已被使用失败 如果你发现另一个错误,那么你必须通过输入到terminal as来终止mongod的运行进程

ps ax | grep mongod
sudo kill ps_number

并找到mongod运行端口并终止进程。 另一种方法是在启动mongod as时创建一个特定的端口

sudo mongod --port 27018

Tilo给出的答案在此之前一直适用于我:

sudo chown -R 126:135 /data/db 

我不得不使用:

sudo chown -R $USER /data/db

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会意外地尝试访问不同的数据文件夹。

在Mac上通过brew安装,其中YOUR_USER_NAME和staff为组

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

我所做的

brew install mongodb

在2018-02-01,这给了我mongodb 3.6.2版本。

在上面orluke的回答的提示下,我试着

$ brew services restart mongodb

一切都生机勃勃。我的mongoose.createConnection()调用完成了我想要的。GUI MongoDB Compass(社区版本)将连接。我用指南针查了当地的情况。startup_log集合。其中有一个文档,我刚启动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

还有一个/usr/local/var/mongodb目录,里面有很多晦涩的文件。所以这似乎是现在安装工作的方式。

我不确定是否brew服务重启设置服务在登录时运行。所以我做了

brew services stop mongodb
brew services start mongodb

希望重启后能再次启动。事实也的确如此。事实上,现在,我认为在初始安装之后要做的正确的事情是

brew services start mongodb

这将启动服务,并在重新启动后重新启动它。