无法使用node.js中的mongoose连接到Docker容器内的MongoDB数据库-身份验证失败,尽管凭据正确

disho6za  于 2023-08-04  发布在  Go
关注(0)|答案(1)|浏览(117)

mongo docker image和mongoose作为Object Document mapper在创建容器后连接到特定db的问题:
(我确保DB_NAME没有未定义...)

await mongoose.connect(`${process.env.MONGO_URI}/${process.env.DB_NAME}`, {

字符串
Idk为什么,但是每当我尝试在docker容器中连接mongodb(构建了docker-compose)时,我都会得到这个错误:

error: Failed to establish MongoDB connection: MongoServerError: Authentication failed..


但是,当我尝试连接MongoDB Atlas时,没有数据库名称,只有URI,我可以轻松连接...
我的Docker-compose文件:

version: "3"
services: 
  server: 
    build: 
      context: ./server
      dockerfile: ./Dockerfile
    ports: 
      - 3001:3001
    volumes: 
      - ./server/dist:/home/nodeUser/app/dist
    depends_on: 
      - mongodb
  mongodb: 
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: toor
      MONGO_INITDB_DATABASE: auth
    ports:
      - 27017:27017


MY .env文件:

PORT=3001
MONGO_URI=mongodb://root:toor@mongodb:27017/auth
DB_NAME=auth


奇怪的是,当我省略凭证,所以不需要身份验证连接,那么它的工作...
我试着省略了凭证-- login without auth required:我尝试使用相同的连接URI进行连接,但没有数据库名称:我检查了db_name是否可以在进程中未定义。env。DB_NAME:负的

fnvucqvd

fnvucqvd1#

我也遇到过类似的问题。因为所使用的用户是root用户,并且它没有链接到特定的数据库。在这种情况下,您必须添加一个选项authSource=admin。(https://www.mongodb.com/docs/manual/reference/connection-string/#mongodb-urioption-urioption.authSource)

await mongoose.connect(`${process.env.MONGO_URI}/${process.env.DB_NAME}`, {
    //...
    authSource: "admin"
}

字符串

相关问题