我们正在尝试在Google Cloud的Debian 9 VM上运行MongoDB。我们的目标是允许开发人员远程访问MongoDB。
我们为vm 35.184.229.10分配了一个静态外部IP。
在VM的外壳中,此命令mongo -u admin -p password 127.0.0.1/admin
WORKS
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'
oot@instance-1:~# mongo
MongoDB shell version v4.0.10
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
我们缺少什么?
答案 0 :(得分:0)
经过多次试验,能够解决此问题。
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 选项)/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