我今天遇到了这个超级烦人的问题。
基本上,我已经使用 GCP Marketplace 产品设置了一个 MongoDB 数据库。它设置主节点、辅助节点和仲裁器。这太酷了。它没有做的是安全。就像,完全一样。所以很自然我必须自己设置它。好吧,现在 20 小时后,在我自己的脸上狠狠地打了几拳,我仍在努力让它运转起来。
基本上,这是我的部分配置:
security:
authorization: enabled
keyFile: '/etc/mongodKey'
如果我注释掉keyFile
实例运行。但由于启用了安全性,它无法连接到任何其他节点。不,我不能禁用它,你疯了吗?
关于 keyFile 的事情......据我所知,mongod
无法打开它,所以它不会启动。我想/etc
这不是一个放置它的好地方吗?我尝试了其他文件夹,但无济于事。没有任何效果。
我需要采取这种安全措施,因为我的同事需要使用 Robo 3T 连接到数据库。因此,删除外部 IP 地址是不可能的。
我做错了什么?请帮忙,因为我正在拔自己的头发。
这是输出sudo service mongod status
:
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2019-08-21 15:28:08 UTC; 4min 29s ago
Docs: https://docs.mongodb.org/manual
Process: 1024 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=1/FAILURE)
Main PID: 1024 (code=exited, status=1/FAILURE)
Aug 21 15:28:08 m-vm-0 systemd[1]: Started MongoDB Database Server.
Aug 21 15:28:08 m-vm-0 systemd[1]: mongod.service: Main process exited, code=exited, status=1/F
Aug 21 15:28:08 m-vm-0 systemd[1]: mongod.service: Unit entered failed state.
Aug 21 15:28:08 m-0 systemd[1]: mongod.service: Failed with result 'exit-code'.
编辑:
我检查了mongod.log
。是的,这是一个权限问题。我无法解决它。
我尝试这样做sudo chmod 400 /etc/mongodKey
,但它什么也没做。拜托,有人,我应该把密钥文件放在哪里,以便 mongodb 可以读取它?这个非常重要!
如果您使用名为“MongoDB”的 GCP MongoDB 市场部署,它允许您设置复制,请了解以下内容:
他们不在初始配置中设置安全性,因此有 2 个选项:
mongod.conf
如果您选择第一种解决方案,您将无法轻松地从任何其他外部源连接到数据库。
如果您选择第二种解决方案,则需要执行以下操作:
生成密钥,整个过程可以在这里找到:https ://docs.mongodb.com/manual/tutorial/enforce-keyfile-access-control-in-existing-replica-set/
复制文件内容
sudo touch <path to key>
sudo nano <path to key>
sudo chmod 600 <path to key>
sudo chown mongodb: <path to key>
mongod.conf
在下面找到的/etc/mongod.conf
security
,authorization
,keyFile
keyFile
提供密钥文件下的路径现在 MongoDB 可以访问密钥文件。
什么噩梦。并且
chmod 400 <path to key>
没有按照文档中的说明为我工作。我不得不将它设置为chmod 600 <path to key>
.