sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur aktiverar man autentisering på MongoDB genom Docker?

Om du tittar på:

  • https://github.com/docker-library/mongo/blob/master/4.2/Dockerfile
  • https://github.com/docker-library/mongo/blob/master/4.2/docker-entrypoint.sh#L303-L313

du kommer att märka att det finns två variabler som används i docker-entrypoint.sh :

  • MONGO_INITDB_ROOT_USERNAME
  • MONGO_INITDB_ROOT_PASSWORD

Du kan använda dem för att ställa in rootanvändare. Du kan till exempel använda följande docker-compose.yml fil:

mongo-container:
  image: mongo:3.4.2
  environment:
      # provide your credentials here
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=rootPassXXX
  ports:
    - "27017:27017"
  volumes:
      # if you wish to setup additional user accounts specific per DB or with different roles you can use following entry point
    - "$PWD/mongo-entrypoint/:/docker-entrypoint-initdb.d/"
  # no --auth is needed here as presence of username and password add this option automatically
  command: mongod

Nu när du startar behållaren genom att docker-compose up du bör lägga märke till följande poster:

...
I CONTROL  [initandlisten] options: { net: { bindIp: "127.0.0.1" }, processManagement: { fork: true }, security: { authorization: "enabled" }, systemLog: { destination: "file", path: "/proc/1/fd/1" } }
...
I ACCESS   [conn1] note: no users configured in admin.system.users, allowing localhost access
...
Successfully added user: {
    "user" : "root",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}

För att lägga till anpassade användare förutom root, använd det körbara skriptet för entrypoint (placerat under $PWD/mongo-entrypoint dir eftersom det är monterat i docker-compose till entrypoint):

#!/usr/bin/env bash
echo "Creating mongo users..."
mongo admin --host localhost -u USER_PREVIOUSLY_DEFINED -p PASS_YOU_PREVIOUSLY_DEFINED --eval "db.createUser({user: 'ANOTHER_USER', pwd: 'PASS', roles: [{role: 'readWrite', db: 'xxx'}]}); db.createUser({user: 'admin', pwd: 'PASS', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]});"
echo "Mongo users created."

Entrypoint-skript kommer att köras och ytterligare användare kommer att skapas.



  1. MongoDb PHP-drivrutinsinstallationsproblem på wamp

  2. Hur man ställer in en Docker redis-behållare med ssl

  3. $project:Är det möjligt att komma åt en egenskap för ett uttrycksresultat i bara ett enda steg?

  4. MongoDB:Kan inte kanonisera frågan:BadValue Projection kan inte ha en blandning av inkludering och exkludering