sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB a Docker prostřednictvím chyby autorizace docker-compose a neinicializace db

  • Pro část ověřování:zkusili jste přidat --authenticationDatabase admin abyste se mohli přihlásit?
  • Ohledně MONGO_INITDB_DATABASE nebude to účinné, pokud nemáte skript pod /docker-entrypoint-initdb.d/ jak je uvedeno v docker-entrypoiny .sh který se používá v obrázku mongodb, takže můžete mít bash skript v docker-entrypoint-initdb.d/ s tím řečeno.

  • Použití uživatele root jako vlastníka pro vaši aplikaci db není bezpečné, protože bude mít možnost ovládat vše v instanci mongodb.

    IMHO lepším přístupem by bylo přidání dalších proměnných, jako jsou následující:

    • MONGO_APPLICATION_DATABASE
    • MONGO_APPLICATION_USERNAME
    • MONGO_APPLICATION_PASSWORD

    Poté přidejte bash skript, který vytvoří uživatele a přiřadí jej k databázi pomocí proměnných prostředí (musíte jej připojit k 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'}]});"
    

    V souboru docker-compose.yml přidejte svazek do aktuálního seznamu svazků

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

    A nakonec odstraňte tuto proměnnou MONGO_INITDB_DATABASE protože to není potřeba

    Pro přihlášení použijte následující příkaz:

    docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE"
    
  • Pro .env soubor Nejsem si jistý, co by mohlo způsobit tento problém. máte nějaké varování při jeho používání? Zvažte také kontrolu tohoto komentáře nebo toto




  1. Prohlédněte si více než 20 nejnovějších dokumentů v MongoDB Compass ze Schema

  2. Mongoose:Rekurzivní vložený dokument v Coffeescriptu

  3. Mongo a najít vždy omezeno na 100 s geografickými daty

  4. Jak dotazovat mongodb pomocí „jako“ pomocí java api?