我们正在尝试在Google Cloud上的Debian 9 VM上运行MongoDB。我们的目标是允许开发人员远程访问MongoDB。
我们为 vm 35.184.229.10 分配了一个静态外部 IP。
在 VM 的外壳中,此命令mongo -u admin -p password 127.0.0.1/admin
有效
connecting to: mongodb://127.0.0.1:27017/admin?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("949b233e-3b2d-47ca-9e4c-d658cf25deb3") }
MongoDB server version: 4.0.10
>
但是如果我们使用外部 IP 地址,它会显示如下错误:
mongo -u admin -p password 35.184.229.10/admin
错误信息
MongoDB shell version v4.0.10
connecting to: mongodb://35.184.229.10:27017/admin?gssapiServiceName=mongodb
2019-06-19T21:13:47.055+0000 E QUERY [js] Error: couldn't connect to
server 35.184.229.10:27017, connection attempt failed: SocketException: Error
connecting to 35.184.229.10:27017 :: caused by :: Connection timed out
: connect@src/mongo/shell/mongo.js:344:17
@(connect):2:6
exception: connect failed
相关信息:
/etc/mongod.conf
文件包含以下内容:
net:
port: 27017
bindIp: 0.0.0.0 (we also tried with bindIpAll)
security:
authorization: 'enabled'
- 运行 mongo 命令显示它在 127.0.0.1 上运行
oot@instance-1:~# mongo
MongoDB shell version v4.0.10
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
我们缺少什么?
经过几次试验,能够解决问题。
- 在首次运行
mongod
服务之前,请使用所需的 bingIP 更新/etc/mongo.conf
文件。我们使用了bindIp: 0.0.0.0
或bindIpAll: true
不确定这是否是一个错误,但会向MongoDB社区提出票证。
作为总结,在 Debian 上卸载和安装 Mongo 的步骤 (参考: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/(
-
sudo service mongod stop
-
sudo apt-get purge mongodb-org*
-
sudo rm -r /var/log/mongodb
和sudo rm -r /var/lib/mongodb
-
echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
-
sudo apt-get update
-
sudo apt-get install mongodb-org
(我没有使用 -y 选项( -
编辑 conf 文件
/etc/mongod.conf
并添加bindIp: 0.0.0.0
或bindIpAll: true
-
sudo service mongod enable
和sudo service mongod start
-
sudo service mongod status
检查 Mongo 是否正在运行。
现在访问mongo
,创建一个测试用户。
您可以测试从其他系统对 mongo 的访问。示例命令可以是这样的mongo -u admin -p password 35.184.229.10/admin