我已经在这个问题上讨论了几个小时,我真的不知道还能做什么(不幸的是,我所做的所有研究都没有提供任何解决方案)。所以我问是否有人能想出一个为什么这不起作用的答案:
我使用 mongo 和 mongo-express 图像运行docker-compose 文件。使用此处提供的默认代码不起作用(mongo-express 以退出代码 1 停止)所以我尝试了大量配置,留下了下面的 docker-compose 文件(实际上可以在 mongo-express 开始并显示
数据库: 管理员
服务器状态: 在 config.js 中打开 admin 以查看服务器统计信息!
显示在 GUI 中)。但从那里没有任何作用。控制台显示问题:
mongoviewer_1 | Database connected
database_1 | 2018-08-22T09:15:27.743+0000 I ACCESS [conn2] SASL SCRAM-SHA-1 authentication failed for admin on admin from client; UserNotFound: Could not find user admin@admin
mongoviewer_1 | unable to list databases
mongoviewer_1 | { MongoError: command listDatabases requires authentication
mongoviewer_1 | at Function.MongoError.create (/node_modules/mongodb-core/lib/error.js:31:11)
mongoviewer_1 | at /node_modules/mongodb-core/lib/connection/pool.js:483:72
mongoviewer_1 | at authenticateStragglers (/node_modules/mongodb-core/lib/connection/pool.js:429:16)
mongoviewer_1 | at Connection.messageHandler (/node_modules/mongodb-core/lib/connection/pool.js:463:5)
mongoviewer_1 | at Socket.<anonymous> (/node_modules/mongodb-core/lib/connection/connection.js:319:22)
mongoviewer_1 | at emitOne (events.js:116:13)
mongoviewer_1 | at Socket.emit (events.js:211:7)
mongoviewer_1 | at addChunk (_stream_readable.js:263:12)
mongoviewer_1 | at readableAddChunk (_stream_readable.js:250:11)
mongoviewer_1 | at Socket.Readable.push (_stream_readable.js:208:10)
mongoviewer_1 | name: 'MongoError',
mongoviewer_1 | message: 'command listDatabases requires authentication',
mongoviewer_1 | ok: 0,
mongoviewer_1 | errmsg: 'command listDatabases requires authentication',
mongoviewer_1 | code: 13,
mongoviewer_1 | codeName: 'Unauthorized' }
Run Code Online (Sandbox Code Playgroud)
docker-compose 如下所示:
database:
image: mongo:latest
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: password
MONGO_INITDB_DATABASE: dockerdb
ports:
- "27017:27017"
mongoviewer:
image: mongo-express
environment:
ME_CONFIG_MONGODB_SERVER: database
ME_CONFIG_BASICAUTH_USERNAME: ""
ME_CONFIG_MONGODB_AUTH_DATABASE: admin
ME_CONFIG_MONGODB_AUTH_USERNAME: admin
ME_CONFIG_MONGODB_AUTH_PASSWORD: password
ME_CONFIG_MONGODB_ADMINUSERNAME: admin
ME_CONFIG_MONGODB_ADMINPASSWORD: password
ports:
- "8081:8081"
links:
- database
depends_on:
- database
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试的当前版本,我尝试了很多其他配置,但没有解决身份验证问题。
如果有人有答案或至少知道该怎么做,我将非常感激!
小智 0
根据 docker 文件上的信息,如果 MongoDB 在名为“database”的容器上运行,则可以使用以下命令从 mongo-express 访问它:
docker run -it --rm \
--network web_default \
--name mongo-express \
-p 8081:8081 \
-e ME_CONFIG_MONGODB_SERVER=database \
-e ME_CONFIG_MONGODB_ADMINUSERNAME= admin \
-e ME_CONFIG_MONGODB_ADMINPASSWORD=password \
mongo-express
Run Code Online (Sandbox Code Playgroud)
作为参考,请查看dockerhub 上的 mongo-express Docu
注意:如果您想使用用户凭据访问特定数据库:
docker run -it --rm \
--network web_default \
--name mongo-express \
-p 8081:8081 \
-e ME_CONFIG_MONGODB_SERVER= database \
-e ME_CONFIG_MONGODB_AUTH_DATABASE= dockerdb \
-e ME_CONFIG_MONGODB_ENABLE_ADMIN=false \
-e ME_CONFIG_MONGODB_AUTH_USERNAME=admin \
-e ME_CONFIG_MONGODB_AUTH_PASSWORD=password \
mongo-express
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2688 次 |
| 最近记录: |