Autenticazione in MongoDB e Creazione dell'account Admin

Vediamo come abilitare Access Control e autenticazione in MongoDB, e come creare l'utente Admin. Questa guida รจ stata testata con le seguenti versioni:

Creazione di un utente Admin per MongoDB su VPS Linux Ubuntu

  1. Avviare MongoDB senza ccess control:
    mongod --port 27017 --dbpath /var/lib/mongodb
  2. Collegarsi all'istanza:
    mongo --port 27017
  3. Creazione dell'utente amministratore: (nella shell di MongoDB)
    use admin
    db.createUser(
        {
            user: "myUserAdmin",
            pwd: passwordPrompt(), // o scrivere direttamente la password
            roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
        }
    )
    
  4. Riavviare l'istanza di MongoDB con access control:
    1. Chiudere l'istanza mongod. Per esempio, dalla shell mongo, inserire il seguente comando:
      db.adminCommand( { shutdown: 1 } )
    2. Uscire dalla shell mongo
    3. Avviare mongod con access control abilitato
      • Se mongod viene avviato dalla riga di comando:
        mongod --auth --port 27017 --dbpath /var/lib/mongodb
      • Se mongod viene avviato utilizzando un file di configurazione:
        security:
            authorization: enabled
        
  5. Collegarsi e autenticarsi come utente amministratore:
    mongo --port 27017 --authenticationDatabase "admin" -u "myUserAdmin" -p
    Inserire la password quando richiesto.
  6. Creare eventuali utenti aggiuntivi:
    La seguente operazione aggiunge l'utente utenteProva al database provaDb, col ruolo di readWrite nel database provaDb e col ruolo di read nel database altroDb:
    use provaDb
    db.createUser(
      {
        user: "utenteProva",
        pwd:  passwordPrompt(),   // o scrivere direttamente la password
        roles: [ { role: "readWrite", db: "provaDb" },
                 { role: "read", db: "altroDb" } ]
      }
    )
    
  7. Connettersi all'istanza e autenticarsi come utenteProva:
    mongo --port 27017 -u "utenteProva" --authenticationDatabase "provaDb" -p
    Inserire la password quando richiesto