繁体   English   中英

Mongo Express 身份验证失败,docker compose

[英]Mongo Express authentication failed with docker compose

我正在尝试使用 docker-compose 在两个容器中运行 mongodb 和 mongo express。 看起来 mongodb 容器工作正常,但 mongo express 容器一直以代码 0 退出。

我得到的错误是:无法使用 connectionString 连接到数据库:mongodb://rootuser:rootpass@mongodb:27017/" mongo-express | (node:8) UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [mongodb:27017]在第一次连接时 [MongoError: Authentication failed.

我的 docker-compose.yml 看起来像这样:

version: "3.8"
services: 
    mongodb:
        image: mongo
        container_name: mongodb
        ports:
          - 27017:27017
        volumes:
          - data:/data
        environment:
          - MONGO_INITDB_ROOT_USERNAME=rootuser
          - MONGO_INITDB_ROOT_PASSWORD=rootpass
    mongo-express:
        image: mongo-express
        container_name: mongo-express
        restart: always
        ports:
          - 8081:8081
        environment:
          - ME_CONFIG_MONGODB_ADMINUSERNAME=rootuser
          - ME_CONFIG_MONGODB_ADMINPASSWORD=rootpass
          - ME_CONFIG_MONGODB_SERVER=mongodb
volumes:
    data: {}

networks:
    default:
        name: mongodb_network 

在 MongoDB 中,您可以在您希望的任何数据库中创建用户帐户。 例如,我可以在数据库“MyDatabase1”中创建一个名为“JohnDoe”的用户帐户,并在数据库“MyDatabase2”中创建另一个名为“JohnDoe”的帐户。 这是两个不同的账户。 您在数据库连接字符串中指定授权数据库。 由于此功能,它可能会变得混乱。 因此,它已成为在名为“admin”的单个数据库中创建数据库用户的标准和推荐方法。 通过将用户添加到单个数据库,更易于管理。

在这篇文章中,您没有确定/指定哪个数据库是您对用户“rootuser”的授权数据库,并且连接信息似乎不包含这样的概念。 我怀疑您的用户是在数据库中定义的,但是当您尝试连接时,它正在查看临时数据库而不是找到用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM