试图在只读目录:/data/db 上创建一个锁文件,结束

我在根目录中创建了 /data/db并运行了 ./mongod:

[initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating
[initandlisten] shutdown: going to close listening sockets...
[initandlisten] shutdown: going to flush diaglog...
[initandlisten] now exiting
[initandlisten] shutting down with code:100
147963 次浏览

问题在于,您创建的目录 /data/db由 root 用户拥有,并且只能由 root 用户写入,但是您以自己的身份运行 monGod。有几种方法可以解决这个问题,但是最终,您必须为有问题的目录提供正确的权限。如果这是为了生产,我建议您检查文件并仔细考虑这个问题——您可能需要特别注意。

然而,如果这只是为了测试,你只是需要这个工作和继续下去,你可以尝试这样做,这将使目录可写的每个人:

> sudo chmod -R go+w /data/db

或者这个,这将使你拥有的目录:

> sudo chown -R $USER /data/db

如果您的系统正在使用 SELinux,请确保您为您创建的目录使用了正确的上下文:

ls -dZ /data/db/
ls -dZ /var/lib/mongo/

并将上下文复制为:

chcon -R --reference=/var/lib/mongo /data/db

我处理过同样的问题:

切换到包含 bin目录的 MongoDB 目录,然后运行:

sudo bin/mongod

作为 root 用户运行 MongoDB 时,您可能会被要求输入 root 密码。如果仍然无法运行 MongoDB,请检查 MongoDB 数据目录的权限。输入:

ls -ld /data

或键入 ls -l /,以获取包括 /data目录在内的目录中的所有目录和文件的权限。

Root 用户的权限模式应该是“ rwx”,这意味着 root 用户能够读、写和执行文件。 为了实现这一点,我们使用:

chmod 755 /data

755是一个八进制表示法,将 /data目录的权限设置为“ rwxr-xr-x”,这意味着 root 用户可以读、写和执行,而“ group”和“ everyone”只能读和执行。

注意: 如果不能这样做,请键入:

sudo chmod 755 /data

将权限设置为 root 用户。

然后,完成该步骤后,使用以下方法重新获取权限模式:

ls -ld /data

应该是这样的:

drwxr-xr-x  3 root  wheel  102 Mar  3 17:00 /data

您不需要在开始时担心“ d”,并注意到权限反映了“ rwxr-xr-x”。

现在可以切换回 MongoDB 目录并输入:

sudo bin/mongod

运行 MongoDB。

我遇到了同样的问题,下面的解决方案解决了这个问题。你应该尝试下面的解决方案。

Sudo mkdir-p/data/db
Sudo chown-R‘ username’/data/db

在 Mac 上,我必须做以下事情:

sudo chown -R $USER /data/db
sudo chown -R $USER /tmp/

因为 /tmp里面还有一个文件 Mongo 也需要访问

很好的解决方案,但是我想知道为什么没有人给出窗户的解决方案。

如果你正在使用的窗口,你只需要“运行管理员”的 cmd。

如果您正在检查您的 mongodb 日志,并且您得到了这样一个错误,那么只需按照我所做的步骤操作即可。这是由于 /data/db目录的权限问题造成的。我正在使用 ubuntu16.04,并通过运行以下两个简单命令找到了解决方案。

步骤1: 授予/data/db 目录权限:

sudo chmod -R 0777 /data/db

第二步: 尝试开始蒙神服务:

sudo service mongod start

第三步: 检查蒙神服务状态:

sudo service mongod status

您只需以超级用户的身份运行该命令:

只要从终端输入: sudo su monGod

修复 /data/db(或 /var/lib/mongodb)的权限:

sudo chown -R mongodb: /data/db

然后重新启动 MongoDB

sudo systemctl restart mongod

如果这没有帮助,请检查您的错误消息,如果您使用的数据目录与/var/lib/monGodb 不同。这样的话,快跑

sudo chown -R mongodb: <insert your data directory here>

来源

如果不需要根目录中有数据库目录,可以在主目录(mkdir -p ~/data/db)中创建 data/db

然后您可以使用 --dbpath选项启动 MongoDB 服务器:

mongod --dbpath=$HOME/data/db

(这是假设您从一个终端启动它。)

事实上,它不一定是 ~/data/db,它可以在任何您想要的地方,这样您就可以有多个数据库路径,并且可以很好地组织所有东西。可能不是生产的最佳选择(取决于您想要做什么) ,但是对于开发工程很好。

如果您在 窗户上,并且正在尝试设置 MongoDB,那么按照 恩里克看这里上面建议的方法,以管理员身份运行 cmd

enter image description here首先停止所有 mongoDB 服务 ,然后在 /上创建一个目录,如果没有,这意味着 root,并删除端口文件。 授予该目录所有权限,成为该目录所有者,< strong > run under command:

sudo service mongod stop
sudo rm -rf /tmp/mongod*
sudo mkdir -p /data/db
sudo chmod -R a+wxr /data
sudo chown -R $USER:$USER /data

现在您已经完成了,只需启动 MongoDB 服务,如果没有帮助,就启动 试着改变港口,比如:

sudo service mongod restart && mongod # if didn't help run below cmd
mongod --port 27018

注意: 对我来说,这些东西都是有用的,希望对你也是有用的,伙计!

这在 Ubuntu LTS 20.04中对我很有用:

$ sudo service mongod start

检查是否启用了 SElinux。 如果它是在执行模式只是尝试与许可模式。为了方便起见,您应该为 mongodb 创建 SElinux 策略。

您可以尝试使用 audit2allow-check https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-fixing_problems-allowing_access_audit2allow

大多数安装 mongo 的方法都会创建一个用户“ mongodb”。如果你有这个用户,你应该使用它,而不是只是黑客的权限,直到一切似乎工作..。

cat /etc/passwd | grep mongo

试图以 root 用户身份运行 mongodb 是一个坏主意,如果试图以普通用户身份运行它,您将看到类似的错误消息。使用 -u 选项到 sudo 以不同的用户身份运行程序。

sudo -u mongodb mongod --dbpath /what/ever/

此外,各种指示和教程要求您停止蒙古,作出一些更改,然后重新启动它。取决于您如何停止 monGod,它的锁文件可能仍然在 tmp 中慢慢消失,所以在尝试重新启动守护进程之前,请确保锁文件已经消失..。

sudo rm /tmp/mongodb-27017.sock

错误的理由:

文件夹 /data/db没有操作权限,

当前此文件夹只具有只读权限。

解决方案:

修改权限: 确保当前用户对 /data/db文件夹具有读写权限

sudo chown -r your-user-name /data/db

2. 在其他地方创建数据库路径并更改 MongoDB 数据库路径 例如:

实际上,我计划把数据库路径放在一个我可以随时看到它的地方。

我直接用了第二种方法

# 首先创建一个数据库存储目录,

我用 ~/Documents/mongodb/data制造的

# 将来运行时,输入以下命令 ok

mongod --dbpath ~/Documents/mongodb/data

另外, 在 MongoDB 中配置全局变量时可能会出现下列问题:

例如:

1. 系统的默认终端通常是 bash,但我使用的是 zsh

那么我们要做的很明确:

我们需要在 zsh中永久设置系统环境变量。

zsh启动时,它将首先读取配置文件 ~/.zshrc,

因此我们可以将环境变量的配置信息放在这个配置文件中

vi ~/.zshrc
Add export PATH=/usr/local/mongodb/bin:$PATH

2. mongodb 的默认数据库存储地址是 /data/db,

需要我们手动创建 sudo mkdir -p /data/db

然后我们启动服务(启动服务器)

mongod

如果您能看到提示[等待连接27017] ,

您的数据库服务实际上已经启动

(虽然有一些非严重警告)

或者

显示等待客户端连接的接口意味着启动成功。

如果不成功,请检查 /data/db文件夹的位置。

如果它不工作,删除它,并创建一个新的。

打开浏览器,输入 localhost:27017127.0.0.1:27017,

这样的一行就会出现 Word。

It looks like you are trying to access MongoDB over HTTP on the native driver port.

3. 输入 MongoDB 命令操作

重新打开命令行并输入

mongo

可以操作数据库,现在我们可以执行与数据库相关的操作,比如执行

show dbs

当您想要停止 MongoDB 时,必须正确退出,

否则,下次连接到数据库时就会出现问题。

使用以下两行代码完成此操作。

use admin;
db.shutdownServer();

4. 最后,

可视化工具 RoboMongo

您可以选择适合您下载的版本。

其他人,

如果您是 Mac 用户,您将下载 MongoDB 的 TGZ 压缩文件,

解压缩,把解压缩文件放到 /usr/local中,

默认情况下,在 Finder 中,您不能看到 /usr这个目录(终端使用请熟练使用) ,

您可以在使用 Shift + Command + G输入 /usr/local之后看到这个隐藏目录。

此外,如果到 MongoDB 的连接失败,该怎么办?

上次主要是由于异常关机,产生了锁文件,只是删除了锁文件。

sudo rm /data/db/mongod.lock

如果 sudo mongod命令的执行被卡住了怎么办?

其实不是卡住了,而是开始了。

无法关闭此窗口。

如果打开一个新窗口,您将发现可以执行 sudo mongo命令。

如何避免这个问题?

注意: 当要停止 MongoDB 时,必须正确退出,

否则下次连接到数据库时就会出现问题。

使用以下两行代码完成此操作。 再说一遍:

use admin;
db.shutdownServer();

如果你不下载 MongoDB 如果你用的是 mac 打开终端, 使用命令进入 dir: cd /usr/local, 然后用你的手下载命令:

sudo curl -O https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-4.X.X.tgz

注意事项: 4.X.X,MongoDB 的版本。

更重要的是,如果你为 macOS 下载 stuiod3t-2019030. dmg,

打开它:

  1. 安装 dmg 文件;

  2. 安装后打开文件;

  3. 安装如图所示的目录,并将下载的 data-man-mongodb-ent-2019.3.0.jar拖入并覆盖原来的目录;

  4. 最后处决

    Sudo spctl ——主禁用 完成 ~ 。

(stuiod3t-2019030. dmg for macOS Cracking: https://blog.csdn.net/m0_49337600/article/details/111415870)

在我的例子中,我为我的数据目录使用了一个自定义路径,并且我在它上面设置了错误的权限。

数据文件夹是以 ubuntu:ubuntu权限分配的。您必须使用 mongodb作为用户: 组。

sudo chown -R mongodb:mongodb  /path/to/mongodb