Docker化的mongodb认证

编程入门 行业动态 更新时间:2024-10-04 15:39:09

<a href=https://www.elefans.com/category/jswz/34/1771431.html style=Docker化的mongodb认证"/>

Docker化的mongodb认证

我是 mongodb 和 docker 世界的新手,正在尝试弄清楚身份验证的工作原理。我不断收到

"UserNotFound: Could not find user \"myusername\" for db \"database\""
登录 docker 和身份验证失败错误。

这是我的docker-compose.yml:

mongo:
    image: mongo
    container_name: mongo
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
      MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE}
    env_file:
      - .env
    volumes:
      - ./data/mongo:/data/db
      - ./scripts/docker/mongo/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
    ports:
      - '6000:27017'

mongo-init.js 文件:

db = db.getSiblingDB("admin");
db.auth(
  process.env.MONGO_INITDB_ROOT_USERNAME,
  process.env.MONGO_INITDB_ROOT_PASSWORD
);

db = db.getSiblingDB(process.env.MONGO_INITDB_DATABASE);
db.createUser({
  user: process.env.MONGO_USER,
  pwd: process.env.MONGO_PASSWORD,
  roles: [
    {
      role: "readWrite",
      db: process.env.MONGO_INITDB_DATABASE,
    },
  ],
});

db.createCollection(process.env.MAIN_DB_COLLECTION);

这是我的连接功能:

import mongoose from "mongoose";
import config from "config";

const dbUrl = `mongodb://${config.get("dbUserName")}:${config.get(
  "dbPass"
)}@localhost:6000/database?authSource=admin`;

const databaseConnection = async () => {
  try {
    await mongoose.connect(dbUrl);
    console.log("Database connected...");
  } catch (error: any) {
    console.log(error.message);
    setTimeout(databaseConnection, 5000);
  }
};

export default databaseConnection;

不胜感激任何建议

回答如下:

更多推荐

Docker化的mongodb认证

本文发布于:2024-05-30 18:50:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770808.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Docker   mongodb

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!