By default there is no authentication in MongoDB. It means that it comes with empty authentication. So we should create users and roles manually. There are lots of ways to create MongoDB docker-compose with authentication. The most popular one of them is to write a bash script with user and roles then use it in docker-compose and another way is to create an init-mongodb.js file with users and roles and use it in docker-compose. But in this post, I will show you how you could create MongoDB docker-compose and then add users and roles manually. Lets start...
Run MongoDB docker-compose without authentication
First of all we should run MongoDB docker-compose
without auth. Using docker-compose up -d
we could run it.
Connect MongoDB without auth inside container
For doing that firstly we should run docker exec -it mongodb bash
and enter inside the container. Then simply run mongo
command to connect to mongodb.
Create user and roles for our MongoDB
Firstly we will create admin user with username root and password root in admin database.
Then we need to create other user. Here I will create a demo user within demo database for our MongoDB:
Now we are ready to run MongoDB with auth.
Enable MongoDB auth in docker-compose
In order to enable auth in MongoDB we will use --auth
flag in docker-compose. After that we could use docker-compose up -d
command again, to run MongoDB container.
Connect MongoDB with defined authentication
In this step we can connect our db with defined authentication. Firstly again we need to run docker exec -it mongodb bash
command in order to enter inside the container. Now we are in so we can connect our db. Here I write 2 command one of them is to connect admin db and another one is to connect demo db.
mongo -u root -p root --authenticationDatabase admin
mongo -u demo -p demo12345 --authenticationDatabase demo
Top comments (7)
Nice article but please use real code samples instead of screenshots for god's sake :D
LOL!
You are the king!
This was a life saved just for the command: [--auth] line - thanks!
Youre welcome Mladen)
the --auth flag creates error "/opt/bitnami/scripts/mongodb/entrypoint.sh: line25: exec: --: invalidate option"