Mongodb:ACCESS [main] 打开文件时出错:/mongo/key.txt:错误文件

Jo.*_*gel 10 mongodb

  1. 生成key.txt

openssl rand -base64 666 > /mongo/key.txt chmod 600 /mongo/key.txt

  1. 命令

--keyFile=/mongo/key.txt --replSet=MONGO_EDU_SET --dbpath=/mongo/data --logpath=/mongo/logs/a.log --logappend

2019-09-05T07:01:23.625+0000 I  ACCESS   [main] error opening file: /mongo/key.txt: bad file
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Cil*_*ing 17

/opt/keyfile在我的例子中,一个密钥文件是在经过许可的情况下安装到的0600,root,root(在主机上),在 docker 镜像中它是0600,1000,1000.

为了解决这个问题,我将host中的权限更改为999,999(翻译为systemd-coredump),但在docker内部用户999被翻译为mongodb.

因此,要修复它,您只需调用(在主机上):

chown 999:999 key-path-on-host
Run Code Online (Sandbox Code Playgroud)


小智 8

检查容器中 /mongo/key.txt 的所有者和属性。一定是这样的:

root@243810c57e61:/# ll /etc/mongo/replkey 
-r-------- 1 mongodb root 1024 Sep 27 12:19 /etc/mongo/replkey
Run Code Online (Sandbox Code Playgroud)


小智 5

ls -la主机中的响应应该类似于

-r-------- 1 systemd-coredump root 1024 jul  8 11:12 keyfile/mongo-cluster-key
Run Code Online (Sandbox Code Playgroud)

我解决了进入容器并执行以下操作的问题chown mongodb keyfile/mongo-cluster-key

另外,我认为您可以通过主机来完成此操作:

$ chown systemd-coredump keyfile/mongo-cluster-key
Run Code Online (Sandbox Code Playgroud)