MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để kích hoạt xác thực trên MongoDB thông qua Docker?

Nếu bạn xem qua:

  • 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

bạn sẽ nhận thấy rằng có hai biến được sử dụng trong docker-entrypoint.sh :

  • MONGO_INITDB_ROOT_USERNAME
  • MONGO_INITDB_ROOT_PASSWORD

Bạn có thể sử dụng chúng để thiết lập người dùng root. Ví dụ:bạn có thể sử dụng docker-compose.yml sau tệp:

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

Bây giờ khi khởi động vùng chứa bằng docker-compose up bạn sẽ nhận thấy các mục sau:

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

Để thêm người dùng tùy chỉnh ngoài quyền root, hãy sử dụng tập lệnh có giá trị entrypoint (được đặt dưới $ PWD / mongo-entrypoint dir khi nó được gắn trong docker-compose đến điểm nhập cảnh):

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

Tập lệnh Entrypoint sẽ được thực thi và người dùng bổ sung sẽ được tạo.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. cách hiển thị truy vấn trong khi sử dụng chú thích truy vấn với MongoRepository với dữ liệu mùa xuân

  2. Hướng dẫn cấu hình bộ cân bằng tải trong cụm phân chia MongoDB

  3. MongoDB:Chỉ mục duy nhất trên thuộc tính của phần tử mảng

  4. loại trừ các trường trong tổng hợp $ lookup

  5. Node.js + mongoose tìm thấy nút bị đóng băng khi có hơn 100 kết quả