node.js - 无法连接到远程数据库
问题描述
本地配置:Node.js 12.2.0
服务器配置:VPS Ubuntu 18.04 MongoDB 3.2.22
有连接到远程 mongodb 数据库的基本脚本。这将返回错误 - Cannot read property 'db' of null.
有admin
和test
数据库。对于管理员数据库,我创建了一个用户
db.createUser(
{
user: "root",
pwd: "passw0rd",
roles: [ { role: "root", db: "admin" } ]
}
)
节点应用程序.js
// app.js
const MongoClient = require("mongodb").MongoClient;
// const url = "mongodb://root:passw0rd@46.173.213.195:27017/admin";
const url = "mongodb://46.173.213.195:27017/test";
const mongoClient = new MongoClient(url, { useNewUrlParser: true });
mongoClient.connect(function(err, client){
const db = client.db("admin");
const collection = db.collection("users");
let user = {name: "Tomy", age: 23};
collection.insertOne(user, function(err, result){
if(err){
return console.log(err);
}
console.log(result.ops);
client.close();
});
});
// package.json
{
"name": "mongoapp",
"version": "1.0.0",
"dependencies": {
"express": "^4.16.0",
"body-parser": "^1.18.0",
"mongodb": "^3.1.0"
}
}
两个网址都返回错误。
我尝试了什么:
- 将 bindIp 更改为 any
///nano etc/mongod.conf
# network interfaces
net:
port: 27017
# bindIp: 127.0.0.1
bindIp: 0.0.0.0
- sudo netstat -ntlp | grep 听
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 17184/mongod
...
...
- 将此代码应用于 iptables
iptables -A INPUT -s 185.228.232.150 -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d 185.228.232.150 -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT
sudo systemctl status mongodb
告诉 db 运行良好
任何人都可以帮忙吗?.. 可以从您的计算机上测试代码。
更新:根据该帖子https://www.mkyong.com/mongodb/mongodb-bind-failed-errno99-cannot-assign-requested-address-for-socket/bindIp不应等于服务器 IP。
解决方案
我不知道如何 - 它刚刚开始工作。绑定IP:0.0.0.0
我认为,经过一堆重新加载和配置更新
推荐阅读
- php - 如何使我的测试网站易受 SQL 注入攻击?
- windows - Docker Enterprise 守护进程在 docker-compose up --build 期间因“Windows 命名管道错误”而死
- c# - 图形在 c# windows 窗体中绘制不正确
- reactjs - 在将参数传递给函数时反应本机无限循环
- python - 有什么方法可以在事先不知道列名的情况下为通过 Many2Many 字段链接的对象获取直通字段?
- neo4j - Neo4j 中的临时显示
- javascript - 无法将 Telerik 下拉列表设为只读
- python - Python,Pandas:将数据框过滤到一个子集并就地更新这个子集
- c++ - 擦除map c ++中其他键值中已经存在的那些值
- python - 从 Python 调用共享库函数挂起(可能的线程/中断问题)