![](/img/trans.png)
[英]MongoDB + Mongo-Express docker-compose causing MongoError: Authentication failed
[英]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.