I've been on this issue for hours now and I really don't know what else to do (and all the research I did didn't provide any solution unfortunately). So I'm asking if anyone can think of an answer why this is not working:
I run a docker-compose file with mongo and mongo-express images. Using the default code provided here didnt work ( mongo-express stopped with exit code 1) so I tried tons of configurations leaving me with the docker-compose file below ( that actually works to the degree that mongo-express gets started and shows
Databases: admin
Server Status: Turn on admin in config.js to view server stats!
displayed in the GUI). But from there nothing works. The console shows the problem:
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' }
The docker-compose looks like follows:
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
That's the current version I was trying and I tried so many other configurations but nothing fixed the auth problem.
If anyone has an answer or at least an idea on what to do I'd be extremely thankfull!
Essentially there are two states when you are configuring your docker-compose.yaml
. I am no expert but this solution resolved this issue for me.
By default when you're running mongo
instance, it requires authentication to access the databases since you are specifying both MONGO_INITDB_ROOT_USERNAME
and MONGO_INITDB_ROOT_PASSWORD
.
You can access the databases in mongo
by removing both of the keys.
According to mongo-express documentation, by default the ME_CONFIG_MONGODB_ENABLE_ADMIN
key is false
making your mongo-express application will not try for any authentication and directly connect to your mongo
instance (thus producing the Authentication failed
error).
You will need to enable the ME_CONFIG_MONGODB_ENABLE_ADMIN
key by changing it to true. Remember to stringify the "true" in your docker-compose.yaml
.
Ensure the ME_CONFIG_MONGODB_ADMINUSERNAME
and ME_CONFIG_MONGODB_ADMINPASSWORD
keys match MONGO_INITDB_ROOT_USERNAME
and MONGO_INITDB_ROOT_PASSWORD
keys respectively.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With