我看到类似的帖子,但没有一个能帮助我解决我的问题。
在Udemy教程中,我从头开始构建MERN应用程序,但在mongoose连接上遇到了麻烦。
下面是我的index.js代码:
const express = require("express");
const mongoose = require("mongoose");
const app = express();
app.use(express.json());
app.listen(5000, () => console.log("Server started on port 5000"));
app.use("/snippet", require("./routers/snippetRouter"));
mongoose.connect("mongodb+srv://snippetUser:_password_@
snippet-manager.sometext.mongodb.net/main?retryWrites=
true&w=majority", {
useNewUrlParser: true,
useUnifiedTopology: true
}, (err) => {
if (err) return console.log("error here " + err);
console.log("Connected to MongoDB");
});
下面是我得到的错误:
Server started on port 5000
error here MongooseServerSelectionError: Could not connect to any
servers in your MongoDB Atlas cluster. One common reason is
that you're trying to access the database from an IP that isn't
whitelisted. Make sure your current IP address is on your Atlas
cluster's IP whitelist:
https://docs.atlas.mongodb.com/security-whitelist/
如上所述,我看到类似的错误有关的IP是不是白名单。
但是,在我的mongoDB帐户中,似乎我的IP已经被列入白名单:
在上面的截图中,空白部分是我的IP所在的位置(就在它说“包括您当前的IP地址”之前)。
既然我的IP列在那里,这是否意味着我的IP是白名单?
如果没有,如何将我的IP列入白名单?
4条答案
按热度按时间jaql4c8m1#
经过几天的沮丧,我进入Mongo Atlas,然后进入网络访问,并将设置更改为“允许从任何地方访问”。它删除了我的IP地址,并将其更改为通用IP地址。
这与我在Udemy上遵循的教程有偏差,但它确实起作用了,我终于可以继续学习剩下的课程了。
cld4siwp2#
这是我在别处留下的一个答案。希望它能帮助遇到这个问题的人:
此脚本将在my gist上保持最新
∮为什么∮
mongo atlas提供了一个价格合理的托管mongo数据库的访问。托管container的CSP对他们的托管mongo数据库收费太高。他们都建议设置一个不安全的CIDR(
0.0.0.0/0
)来允许container访问集群。这显然是荒谬的。这个入口点脚本是外科手术,以保持最低的特权访问。2只有当前托管的IP地址的服务是白名单。
用法
Dockerfile
的入口点exec "$@"
,因为这仅适用于容器行为
使用蒙戈图集project IP access list endpoints
当创建白名单条目时,服务休眠60秒以等待atlas将访问传播到集群
环境
设置
1.复制公钥(
MONGO_ATLAS_API_PK
)和私钥(MONGO_ATLAS_API_SK
)1.转到项目设置页面并复制项目ID(
MONGO_ATLAS_API_PROJECT_ID
)在容器服务的env中提供以下值
SERVICE_NAME
:用于创建/更新(删除旧)白名单条目的唯一名称MONGO_ATLAS_API_PK
:步骤3MONGO_ATLAS_API_SK
:步骤3MONGO_ATLAS_API_PROJECT_ID
:步骤4深度
脚本
snz8szmq3#
如果使用免费的MongoDBAtlas
,请确保集群没有意外地暂停
wrrgggsh4#
删除当前IP地址并重新添加