【问题标题】:How to connect to MongoDB Database via IP如何通过 IP 连接到 MongoDB 数据库
【发布时间】:2020-03-23 20:04:55
【问题描述】:

我有一个简单的问题,但找不到有效的解决方案。 我有一个在 Vue 和 Mongo 上运行的应用程序。我已经使用 Mongo Atlas 进行测试,但现在是时候让应用继续生产了,所以决定使用 DigitalOcean。我用 Node.js 和 MongoDB 创建了 droplet,并设法连接了我的后端和 MongoDB。但! 当我在 VPS 上运行我的文件时没有问题:

mongodb.MongoClient.connect('mongodb://localhost:27017/dbname', { useUnifiedTopology: true }, function (err, client) {
    if (err) throw err;

    app.locals.db = client.db('xxxx');
    app.listen(port, () => console.log(`Server started on port ${port}`));
})

但是,当我尝试通过本地副本上的 IP 连接时,出现超时错误。

mongodb.MongoClient.connect('mongodb://ip:27017/dbname', { useUnifiedTopology: true }, function (err, client) {
    if (err) throw err;

    app.locals.db = client.db('xxxx');
    app.listen(port, () => console.log(`Server started on port ${port}`));
})

我已经使用ip:3000(应用程序的端口)和ip:27017 进行了测试。另外,我创建了一个用户并尝试使用用户并通过。一样。我尝试编辑 mongod.conf 并沿着 localhost 添加了 VPS 的 IP - 仍然无法正常工作。我做错了什么?

【问题讨论】:

  • 您是否尝试将所有地址列入白名单?
  • 是的。实际上,我在此处发布问题 2 分钟后发现了问题。事实证明,在 host:port 部分之后,我得到了项目的路径而不是数据库名称。他们有相似的名字......
  • mongod 默认只监听 127.0.0.1,你确定它在监听其他 IP 吗?

标签: node.js mongodb digital-ocean


【解决方案1】:

您可以在配置文件中提及 IP 地址。

您提到的是ip:3000 参数,而应该是BindIP : 3000

更多信息请参考文档https://docs.mongodb.com/manual/reference/configuration-options/index.html

你也可以参考一个我觉得很好解决类似问题的博客。

https://medium.com/@mansi.kapahi/setting-up-a-mongodb-replica-set-on-an-ec2-server-e32c4d0f0849

【讨论】:

    猜你喜欢
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 2019-01-03
    • 2023-03-10
    相关资源
    最近更新 更多