在替换用户和密码字段时,请确保删除了“ ”。 这对我有用
,
有时会发生此错误,原因是该IP地址获得了访问我们数据库的权限。
请记住,您的应用程序可以正常运行,然后出现此类错误。
每当这种情况发生时,大多数时候您的IP地址都已更改,这不在允许的地址白名单中。
您所要做的就是使用您当前的IP地址更新白名单
,
只需转到mongodb atlas管理面板。进入安全选项卡>“网络访问”>然后通过添加IP将其列入白名单
See this image to locate the particular menu
注意:在Google上检查您的IP,然后将其添加
,
我遇到了同样的错误。这些是我要解决的步骤
- 登录您的Mongo Atlas帐户
- 转到安全标签->网络访问-> ,然后将您的IP列入白名单
- 然后转到安全标签->数据库访问-> 并删除当前用户。
- 通过提供新的用户名和密码来创建新用户。
- 在 .env 文件或 mongoose.connect 方法
中提供新创建的用户名和密码。
完成这些步骤后,它照常工作。希望对您有帮助。
,
将您的连接IP地址列入白名单。
Atlas仅允许客户端从项目白名单中的条目连接到群集。项目白名单与API白名单不同,后者将API访问限制为特定的IP或CIDR地址。
注意
如果Atlas在“设置连接安全性”步骤中指示您已经在群集中配置了白名单条目,则可以跳过此步骤。要管理IP白名单,请参阅将条目添加到白名单。
如果白名单为空,Atlas会提示您将IP地址添加到项目的白名单中。您可以:
点击添加您的当前IP地址将您的当前IP地址列入白名单。
单击“添加其他IP地址”以添加单个IP地址或CIDR标记的地址范围。
对于在Amazon Web Services(AWS)上部署并使用VPC对等的Atlas群集,您可以添加与对等VPC关联的安全组。
您可以为新添加的IP地址或CIDR范围提供可选描述。点击添加IP地址,将地址添加到白名单。
,
我遇到了这个问题,对我来说,解决方法是检查我的ip是否正确配置,然后在此屏幕中确认
enter image description here
,
有时候,当您关闭MongoDB服务时,也会发生这种情况。
以下是打开MongoDB服务的步骤:
- 按窗口
key + R
打开“运行”窗口。
- 然后键入
services.msc
打开服务窗口。
- 然后选择MongoDB服务器,右键单击它,最后单击
start
。
,
尝试在群集中指定节点驱动程序版本2、2、12->连接->连接应用程序。新字符串必须与mongodb://一起使用。使用此字符串进行连接。不要忘记输入密码
,
对于仍在努力解决此问题的任何人。我通过在猫鼬选项本身中设置所有参数(如用户名,密码和dbName)解决了此问题。
早期的代码是这样的。 (当我遇到错误时)。
import mongoose from "mongoose";
mongoose.Promise = require("bluebird");
let dbName = process.env.DB_NAME;
const dbAddress = process.env.DB_HOST;
const dbPort = process.env.DB_PORT;
if(!dbName || !dbAddress || !dbPort){
throw new Error("Mongo error unable to configuredatabase");
}
let options = {
useNewUrlParser: true,useUnifiedTopology: true,user:process.env.DB_USER,pass: process.env.DB_PASS
};
mongoose.connect(`mongodb://${dbAddress}:${dbPort}/${dbName}`,options).catch(err => {
if (err.message.indexOf("ECONNREFUSED") !== -1) {
console.error("Error: The server was not able to reach MongoDB. Maybe it's not running?");
process.exit(1);
} else {
throw err;
}
});
请注意,mongo中的url连接。 mongodb://${dbAddress}:${dbPort}/${dbName}
。
没有错误的新代码。
import mongoose from "mongoose";
mongoose.Promise = require("bluebird");
let dbName = process.env.DB_NAME;
const dbAddress = process.env.DB_HOST;
const dbPort = process.env.DB_PORT;
// console.log("process.env",process.env)
if(!dbName || !dbAddress || !dbPort){
throw new Error("Mongo error unable to configuredatabase");
}
let options = {
useNewUrlParser: true,pass: process.env.DB_PASS,dbName: dbName
};
mongoose.connect(`mongodb://${dbAddress}:${dbPort}`,options).catch(err => {
if (err.message.indexOf("ECONNREFUSED") !== -1) {
console.error("Error: The server was not able to reach MongoDB. Maybe it's not running?");
process.exit(1);
} else {
throw err;
}
});
请注意选项和网址。
这是我的本地环境。不是生产环境。
希望这会有所帮助。
,
我有同样的问题。我可以使用Atlas给我的连接字符串从MongoDB Compass或Node应用程序进行连接。我通过将IP地址添加到Atlas的白名单中来解决此问题。
,
您是否在使用任何防病毒软件,防火墙,VPN或在受限网络上(例如,工作/商业Wi-Fi / LAN连接)?然后尝试将其关闭/重新连接到其他网络。您正在使用的网络的管理员可能阻止了某些IP /连接,或者只是防病毒才具有防火墙策略。即使您在MongoDB地图集的0.0.0.0
中拥有IP Address
,也是如此。
,
这可能主要是因为npm更新。
我刚刚更新到npm v 6.13.7。我开始得到那个错误。
按照@Matheus的指示,我对“ {useUnifiedTopology:true}”行进行了注释,然后我就可以通过它。
我更新了猫鼬,一切正常。
,
尝试使用默认身份验证方法“ SCRAM”在数据库访问中创建新用户。然后为此创建一个新的集群。它为我工作!我的
server.js 文件
const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');
require('dotenv').config();
const app = express();
const port = process.env.PORT || 5000;
app.use(cors());
app.use(express.json());
//const uri = process.env.ATLAS_URI;
mongoose.createConnection("mongodb+srv://u1:u1@cluster0-u3zl8.mongodb.net/test",{ userNewParser: true,useCreateIndex: true,useUnifiedTopology: true}
);
const connection = mongoose.connection;
connection.once('once',() => {
console.log(`MongoDB databse connection established successfully`);
})
app.listen(port,() => {
console.log(`Server is running on port: ${port}`);
});
,
我能够解决问题。一切都很好,但是防火墙阻止了对端口27017的访问。可以在http://portquiz.net:27017/上测试连接性,也可以使用telnet到终结点,可以从clusters-> Metrics中获取。
谢谢大家的建议
,
请检查您的密码,用户名或IP配置。通常,只要您的上述配置与服务器配置不匹配,就会出现“服务器选择在超时30000毫秒后超时。_onTimeout”。
,
您可以删除 {useUnifiedTopology:true} 标志并重新安装猫鼬Dependecy!
它对我有用。
,
您可以尝试:
private $last_query;
public function query($sql) {
$this->last_query = $sql;
return $this->adaptor->query($sql);
}
public function last_query() {
return $this->last_query;
}
,
我已经通过使用以下方法(使用回调)解决了这个问题。
const uri = '';
mongoose
.connect(uri,{ useNewUrlParser: true,useUnifiedTopology: true },() => {
console.log("we are connected");
})
.catch((err) => console.log(err));
,
我已经通过以下方式解决了这个问题。
const URI = "mongodb://127.0.0.1:27017/DashApp"
const connectDB = async () => {
try {
const connection = await mongoose.connect(
URI,{
useCreateIndex: true,useNewUrlParser: true,useFindAndModify: false,useUnifiedTopology: true
}
)
console.log(`MongoDB connected: ${connection.connection.host}`);
} catch (error) {
console.log(`MongoDB error when connecting: ${error}`);
}
}
connectDB()
本文链接:https://www.f2er.com/2983705.html