【发布时间】:2021-07-01 17:20:10
【问题描述】:
我使用时一切正常:
mongodb://0.0.0.0:27017/data。
添加数据库身份验证后:mongodb://user:pwd@0.0.0.0:27017/?authSource=data 停止工作。
在此之前我填写数据库data 并创建了一个新用户:
use data
db.createUser(
{
user: "user",
pwd: "pwd",
roles: [
{ role: "dbAdmin", db: "data" },
]
}
)
db.grantRolesToUser(
"user",
[ "readWrite" , { role: "read", db: "data" } ],
{ w: "majority" , wtimeout: 4000 }
)
我更改了mongod.cfg 文件:
security:
authorization: enabled
但是不管怎样还是不行,后端连接到数据库但是请求是空的,好像后端无法访问数据库中的数据。
后端的server.js:
const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');
const app = express();
const db = "mongodb://user:pwd@0.0.0.0:27017/?authSource=data";
const PORT = 3000;
const api = require('./routes/api');
app.use(cors());
app.use(express.urlencoded({ extended: true }));
app.use(express.json())
app.use('/api', api);
mongoose
.connect(db, {
useFindAndModify: false,
useUnifiedTopology: true,
useNewUrlParser: true,
})
.then(() => console.log('Connected to mongodb!'))
.catch(err => {
console.log(Error, err.message);
});
app.listen(PORT, function () {
console.log('Server running on localhost:' + PORT);
});
【问题讨论】:
-
您是否可以使用新用户/密码从
mongoshell 或 Compass 等任何工具查询相同的数据? -
" 后端连接数据库但请求为空" - 你的请求路由代码是什么?
-
您的 NodeJS 后端应用程序是否连接到数据库?你看到console.logged:'Connected to mongodb!'
-
db.grantRolesToUsermethod 参数 - 你能验证它们是否正确吗? -
您在创建用户后是否通过授权重新启动了
mongod实例(我看到您已更改配置文件)?
标签: node.js database mongodb authentication mongoose