Mongodb在获得授权后停止工作



当我使用时,一切都很好:CCD_ 1。添加与数据库的身份验证后: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);
});

我解决了我的问题。原因是连接字符串中的authSource

之前:

"connectionString": "mongodb://user:pwd@0.0.0.0:27017/?authSource=data"

之后:

"connectionString": "mongodb://user:pwd@0.0.0.0:27017/data"

现在运行良好。

最新更新