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

MongoDB và Docker thông qua lỗi xác thực do docker-soạn và không phát sinh db

  • Đối với phần xác thực:bạn đã thử thêm --authenticationDatabase admin chưa để có thể đăng nhập?
  • Về MONGO_INITDB_DATABASE nó sẽ không hiệu quả trừ khi bạn có tập lệnh dưới /docker-entrypoint-initdb.d/ như được hiển thị trong docker-entrypoiny .sh được sử dụng trong hình ảnh mongodb để bạn có thể có tập lệnh bash trong docker-entrypoint-initdb.d/ với điều đó đã nói.

  • Sử dụng người dùng root làm chủ sở hữu cho ứng dụng của bạn db không phải là một cách bảo mật khôn ngoan vì nó sẽ có khả năng kiểm soát mọi thứ trong phiên bản mongodb.

    IMHO, một cách tiếp cận tốt hơn sẽ là thêm các biến phụ như sau:

    • MONGO_APPLICATION_DATABASE
    • MONGO_APPLICATION_USERNAME
    • MONGO_APPLICATION_PASSWORD

    Sau đó, thêm một tập lệnh bash sẽ tạo người dùng và gán nó vào cơ sở dữ liệu bằng cách sử dụng các biến môi trường (bạn cần gắn nó vào docker-entrypoint-initdb.d):

    # initmongo/setup.sh
    mongo admin -u $MONGO_INITDB_ROOT_USERNAME -p $MONGO_INITDB_ROOT_PASSWORD --eval "db.getSiblingDB('$MONGO_APPLICATION_DATABASE').createUser({user: '$MONGO_APPLICATION_USERNAME', pwd: '$MONGO_APPLICATION_PASSWORD', roles: [{role: 'readWrite', db: '$MONGO_APPLICATION_DATABASE'}]});"
    

    Trong docker-compo.yml, hãy thêm một tập vào danh sách các tập hiện tại của bạn

    #docker-compose.yml
    volumes:
      - ".${MONGO_DATA_DIR}:${MONGO_DATA_DIR}"
      - "./initmongo/:/docker-entrypoint-initdb.d/"
    

    Và cuối cùng xóa biến này MONGO_INITDB_DATABASE vì không cần nó

    Để đăng nhập, hãy sử dụng lệnh sau:

    docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE"
    
  • Đối với .env tôi không chắc điều gì có thể gây ra sự cố này. Bạn có bất kỳ cảnh báo nào trong khi sử dụng nó không? Cũng nên cân nhắc kiểm tra nhận xét này hoặc cái này




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để thực thi kiểm tra kiểu cho một giá trị của tài liệu trong MongoDB?

  2. Sử dụng tổng hợp để sắp xếp theo điều kiện phức tạp trong Mongodb

  3. Làm thế nào để tra cứu một trường với một mảng trong mongodb tài liệu con lồng nhau?

  4. MongoError:Không thể trích xuất khóa địa lý từ đối tượng có Loại:Điểm

  5. Nén (rút ngắn) chuỗi PHP từ 24 ký tự xuống 20 ký tự