对于在VPS上运行的MongoDB建立远程连接,我有一个问题。我遵循了有关编辑mongod.conf以绑定IP的说明。
网络部分如下所示:
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,xx.xx.xxx.xxx
后一个IP是我的本地机器,我正在尝试使用Compass访问MongoDB。
我也尝试过在[]
中围绕列表,但它不起作用。每次更改后,我都会重新启动mongo服务,如下所示:
sudo systemctl restart mongod
在将以逗号分隔的新IP添加到mongo
之后,尝试运行bindIp
时,将收到以下错误。
MongoDB shell version v4.4.9
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:374:17
@(connect):2:6
exception: connect failed
exiting with code 1
当我编辑mongo.conf
以删除第二个IP时,mongo
可以工作,我可以使用shell。
我还在MongoDB管理中创建了一个新用户,用作Compass中的凭据,我正在使用它来尝试在Compass中进行连接。
这是管理员system.users
集合中用户的样子。
{
"_id" : "admin.newAdmin",
"userId" : UUID("9b5c9a51-de6b-4e55-a2bc-3ae92d89993c"),
"user" : "newAdmin",
"db" : "admin",
"credentials" : { ... },
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "readWriteAnyDatabase",
"db" : "admin"
}
]
}
Compass中的连接字符串:
mongodb://username:password@<vps-ip>:27017/?authSource=admin&readPreference=primary&ssl=false
我已经看到用0.0.0.0
代替0.0.0.0
是可行的,但从安全性的角度来看,我对此并不满意。
如果有人可以帮助解决方案,安全和容易地建立一个远程连接,我将非常感激。
发布于 2022-08-20 20:04:04
bindIp
是在mongodb服务器上侦听的网络接口列表,而不是客户端IP列表。
假设mongodb运行在*nix系统上,请列出终端中的可用接口:
ifconfig
或
ip -c a
依赖于分配
至少有一个虚拟接口"lo“inet 127.0.0.1
--本地循环,和至少一个与网卡相关联的物理接口--比如"eth0”、"wifi0“等等。数字可能不同,接口的数量也可能不同。从inet
属性获取IP并将其添加到mongodb中。
我要强调的是,bindIp
并不限制谁可以连接到mongo,只限于mongo监听的网络,所以如果只有两个接口- lo和eth0,那么在配置中列出这两个接口或者使用0.0.0.0没有区别。
如果您想限制来自特定客户端 IP的通信量,请使用系统防火墙。
https://stackoverflow.com/questions/73429254
复制相似问题