MongoDB quali sono l'utente e la password predefiniti?


103

Sto usando la stessa stringa di connessione su locale e produzione. Quando la stringa di connessione èmongodb://localhost/mydb

Qual è il nome utente e la password? È sicuro mantenerlo in questo modo?

Risposte:


210

Per impostazione predefinita, mongodb non ha alcun controllo di accesso abilitato, quindi non ci sono utenti o password predefiniti.

Per abilitare il controllo degli accessi, utilizzare l'opzione della riga di comando --autho l'impostazione del file di configurazione security.authorization.

È possibile utilizzare la procedura seguente o fare riferimento a Abilitazione dell'autenticazione nei documenti di MongoDB.

Procedura

  1. Avvia MongoDB senza controllo di accesso.

    mongod --port 27017 --dbpath /data/db1
    
  2. Connettiti all'istanza.

    mongo --port 27017
    
  3. Crea l'amministratore utente.

    use admin
    db.createUser(
      {
        user: "myUserAdmin",
        pwd: "abc123",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }
    )
    
  4. Riavvia l'istanza MongoDB con il controllo degli accessi.

    mongod --auth --port 27017 --dbpath /data/db1
    
  5. Autentica come amministratore utente.

    mongo --port 27017 -u "myUserAdmin" -p "abc123" \
      --authenticationDatabase "admin"
    

17
Se l'utente viene creato con il ruolo userAdminAnyDatabase, sarà impossibile creare alcun database. Pertanto la sezione dei ruoli dovrebbe essere: ruoli: [{ruolo: "root", db: "admin"}]
georgeos

4
Si prega di collegare il post originale dal Manuale MongoDB
Nathan Cho

1
se vuoi trovare il dbpath usa: grep dbPath /etc/mongod.conf
rckd

13

Oltre a quanto già citato da @Camilo Silva, se vuoi dare libero accesso per creare database, leggere, scrivere database, ecc., Ma non vuoi creare un ruolo di root, puoi modificare il 3 ° passaggio con quanto segue:

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, 
             { role: "dbAdminAnyDatabase", db: "admin" }, 
             { role: "readWriteAnyDatabase", db: "admin" } ]
  }
)


1

Oltre alle risposte fornite in precedenza, un'opzione è seguire l'approccio dell''eccezione localhost 'per creare il primo utente se il tuo database è già avviato con il controllo dell'accesso ( --authinterruttore). Per fare ciò, è necessario disporre dell'accesso localhost al server e quindi eseguire:

mongo
use admin
db.createUser(
 {
     user: "user_name",
     pwd: "user_pass",
     roles: [
           { role: "userAdminAnyDatabase", db: "admin" },
           { role: "readWriteAnyDatabase", db: "admin" },
           { role: "dbAdminAnyDatabase", db: "admin" }
        ]
 })

Come indicato nella documentazione di MongoDB:

L'eccezione localhost consente di abilitare il controllo dell'accesso e quindi di creare il primo utente nel sistema. Con l'eccezione localhost, dopo aver abilitato il controllo degli accessi, connettersi all'interfaccia localhost e creare il primo utente nel database admin. Il primo utente deve disporre dei privilegi per creare altri utenti, ad esempio un utente con il ruolo userAdmin o userAdminAnyDatabase. Le connessioni che utilizzano l'eccezione localhost hanno accesso solo per creare il primo utente nel database admin.

Ecco il collegamento a quella sezione dei documenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.