首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尽管向MongoDB添加了本地IP,但无法远程连接到mongod.conf

尽管向MongoDB添加了本地IP,但无法远程连接到mongod.conf
EN

Stack Overflow用户
提问于 2022-08-20 18:42:05
回答 1查看 29关注 0票数 0

对于在VPS上运行的MongoDB建立远程连接,我有一个问题。我遵循了有关编辑mongod.conf以绑定IP的说明。

网络部分如下所示:

代码语言:javascript
运行
复制
# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1,xx.xx.xxx.xxx 

后一个IP是我的本地机器,我正在尝试使用Compass访问MongoDB。

我也尝试过在[]中围绕列表,但它不起作用。每次更改后,我都会重新启动mongo服务,如下所示:

代码语言:javascript
运行
复制
sudo systemctl restart mongod

在将以逗号分隔的新IP添加到mongo之后,尝试运行bindIp时,将收到以下错误。

代码语言:javascript
运行
复制
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集合中用户的样子。

代码语言:javascript
运行
复制
{
    "_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中的连接字符串:

代码语言:javascript
运行
复制
mongodb://username:password@<vps-ip>:27017/?authSource=admin&readPreference=primary&ssl=false 

我已经看到用0.0.0.0代替0.0.0.0是可行的,但从安全性的角度来看,我对此并不满意。

如果有人可以帮助解决方案,安全和容易地建立一个远程连接,我将非常感激。

EN

回答 1

Stack Overflow用户

发布于 2022-08-20 20:04:04

bindIp是在mongodb服务器上侦听的网络接口列表,而不是客户端IP列表。

假设mongodb运行在*nix系统上,请列出终端中的可用接口:

代码语言:javascript
运行
复制
ifconfig

代码语言:javascript
运行
复制
ip -c a

依赖于分配

至少有一个虚拟接口"lo“inet 127.0.0.1 --本地循环,和至少一个与网卡相关联的物理接口--比如"eth0”、"wifi0“等等。数字可能不同,接口的数量也可能不同。从inet属性获取IP并将其添加到mongodb中。

我要强调的是,bindIp并不限制谁可以连接到mongo,只限于mongo监听的网络,所以如果只有两个接口- lo和eth0,那么在配置中列出这两个接口或者使用0.0.0.0没有区别。

如果您想限制来自特定客户端 IP的通信量,请使用系统防火墙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73429254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档