MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara mengaktifkan otentikasi di MongoDB melalui Docker?

Jika Anda melihat:

  • 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

Anda akan melihat bahwa ada dua variabel yang digunakan di docker-entrypoint.sh :

  • MONGO_INITDB_ROOT_USERNAME
  • MONGO_INITDB_ROOT_PASSWORD

Anda dapat menggunakannya untuk mengatur pengguna root. Misalnya Anda dapat menggunakan docker-compose.yml berikut berkas:

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

Sekarang ketika memulai wadah dengan docker-compose up Anda akan melihat entri berikut:

...
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"
        }
    ]
}

Untuk menambahkan pengguna khusus selain root, gunakan skrip entrypoint yang dapat dieksekusi (ditempatkan di bawah direktori $PWD/mongo-entrypoint seperti yang dipasang di docker-compose ke titik masuk):

#!/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."

Skrip titik masuk akan dieksekusi dan pengguna tambahan akan dibuat.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pipa agregasi Mongodb cara membatasi push grup

  2. Di MongoDB bagaimana Anda menggunakan $set untuk memperbarui nilai bersarang/dokumen tersemat?

  3. MongoDB PILIH JUMLAH KELOMPOK OLEH

  4. MongoDB Bersarang ATAU/DAN Dimana?

  5. MongoDB - Ekspor Data