nodejs和mongodb身份验证失败



我正在用docker、mongodb和nodejs(mongose(设置一个应用程序,但由于某种原因,我遇到了身份验证错误。

UserNotFound:找不到用户";testuserdb";对于db";管理员";

有什么建议吗?

谢谢!

.env

MONGO_USERNAME=testuserdb
MONGO_PASSWORD=testuserpass
MONGO_PORT=27017
MONGO_DB=testdb

db.js(猫鼬连接(

const mongoose = require('mongoose');
const {
MONGO_USERNAME,
MONGO_PASSWORD,
MONGO_HOSTNAME,
MONGO_PORT,
MONGO_DB
} = process.env;
const options = {
useNewUrlParser: true,
reconnectTries: Number.MAX_VALUE,
reconnectInterval: 500,
connectTimeoutMS: 10000,
};
const url = `mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_HOSTNAME}:${MONGO_PORT}/${MONGO_DB}?authSource=admin`;
mongoose.connect(url, options).then( function() {
console.log('MongoDB is connected');
})
.catch( function(err) {
console.log(err);
});

docker compose我使用docker环境变量来mongodb和nodejs来定义用户名、密码、主机名db和数据库名

version: '3'
services:
nodejs:
build:
context: .
dockerfile: Dockerfile.dev
depends_on: 
- db
image: nodejs
container_name: nodejs
restart: unless-stopped
env_file: 
- .env
environment:
- MONGO_USERNAME=$MONGO_USERNAME
- MONGO_PASSWORD=$MONGO_PASSWORD
- MONGO_HOSTNAME=db
- MONGO_PORT=$MONGO_PORT
- MONGO_DB=$MONGO_DB 
ports:
- "3000:3000"
volumes:
- .:/home/node/app
- node_modules:/home/node/app/node_modules
networks:
- app-network
#command: ./wait-for.sh db:27017 -- /home/node/app/node_modules/.bin/nodemon app.js
command: /home/node/app/node_modules/.bin/nodemon app.js
db:
image: mongo:4.2.9-bionic
container_name: db
restart: unless-stopped
env_file: 
- .env
environment: 
- MONGO_INITDB_ROOT_USERNAME=$MONGO_USERNAME
- MONGO_INITDB_ROOT_PASSWORD=$MONGO_PASSWORD
- MONGO_INITDB_DATABASE=$MONGO_DB
volumes:
- dbdata:/data/db
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
dbdata:
node_modules:

根据可用信息。我认为用户testuserdb存在于testdb上,而不在admin数据库上。

在定义连接url时,您提到了authSource=admin

根据您的需要更改其中一个。

最新更新