Come posso inserire Mongo come superutente o ripristinare gli utenti?


29

Stavo giocando con le autorizzazioni e mi sono bloccato fuori dal database Mongo. Sono abbastanza sicuro di averlo fatto provando ad aggiungere esplicitamente l'accesso a un database ma invece ho sovrascritto consentendo solo l'autorizzazione al database. Quindi sono effettivamente bloccato fuori dal mio database Mongo e tutto ciò che leggo mi dice come creare un super utente se ho il privilegio di aggiungere utente. In questo momento non penso di avere utenti con quel privilegio. C'è un modo per accedere al database come tutti gli accessi? Possiedo il server e ho accesso come root.

Risposte:


38

Se ti sei bloccato, allora devi fare quanto segue:

  1. Ferma la tua istanza MongoDB
  2. Rimuovi le opzioni --auth e / o --keyfile dalla configurazione di MongoDB per disabilitare l'autenticazione
  3. Avvia l'istanza senza autenticazione
  4. Modifica gli utenti secondo necessità
  5. Riavvia l'istanza con l'autenticazione abilitata

La rimozione di auth non è stata abbastanza, grazie!
Andrei,

14

Ho avuto un problema simile quando ho creato un utente senza aggiungere prima un superutente. I seguenti passaggi hanno aiutato a risolvere il problema:

  1. Apri il file di configurazione di MongoDB usando sudo( sudo vi mongodb.conf).
    Il file può essere trovato nella /etc/cartella.
  2. Commento "auth = true".
  3. Arresta il servizio MongoDB ( sudo service mongod stop)
  4. Avvia il servizio MongoDB ( sudo service mongod start)
  5. Quindi creare il superutente "root" utilizzando il comando seguente:

    use admin
    
    db.createUser({user:"admin",pwd:"password",roles:[{role:"root",db:"admin"}]});

    Per riferimento https://docs.mongodb.com/manual/reference/built-in-roles/#superuser-roles

  6. Torna indietro e commenta "auth=true". Arresta e avvia / riavvia il servizio mongodb.


Non posso ringraziarti abbastanza. Sono stato bloccato cercando di capirlo quando ho caricato il progetto sul server di sviluppo. Grazie mille! :)
Woppi

Idem. Messaggi di errore del server incredibilmente inutili su questo. Grazie!
Tom,

7

Se si utilizza un set di repliche con akeyfile

Sicurezza tra i membri del set di repliche utilizzando l'autenticazione interna

Il file di chiavi viene utilizzato per l'autenticazione nella replica.

security:
  keyFile: <path-to-keyfile>
replication:
  replSetName: <replicaSetName>

È possibile utilizzare questo comando per accedere come amministratore a mongod:

mongo -u __system -p "$(tr -d '\011-\015\040' < path-to-keyfile)" --authenticationDatabase local

Postfazione sei in grado di creare o modificare il tuo utente amministratore.

Ruolo interno

__systemMongoDB assegna questo ruolo agli oggetti utente che rappresentano i membri del cluster, come i membri del set di repliche e le istanze di mongos. Il ruolo autorizza il suo detentore a intraprendere qualsiasi azione contro qualsiasi oggetto nel database.

Non assegnare questo ruolo agli oggetti utente che rappresentano applicazioni o amministratori umani, se non in circostanze eccezionali.


Dove hai trovato questa informazione?
ottedro

2

Controlla le risposte a questa domanda, potrebbero aiutarti

https://stackoverflow.com/questions/20117104/mongodb-root-user

Fondamentalmente se hai ancora accesso al server, potresti essere in grado di accedere al Admindatabase.

C'è di più in questa pagina http://docs.mongodb.org/v2.4/reference/user-privileges/

Si noti che la versione 2.6 modifica il modo in cui funziona completamente. Per 2.6 dovrai passare più tempo con http://docs.mongodb.org/manual/security/


1
Come menzionato nel post, questa è l'unica informazione che sono stato in grado di trovare. Non ho i permessi per farlo
Tony

0

Devi interrompere Mongo, rimuovere i file di amministrazione, quindi avviare Mongo

sudo service mongod stop
mv /data/admin.* .
sudo service mongod start

2
Ciò sta distruggendo il database degli utenti amministrativi e consentendo l'accesso tramite "localHostExcetption" non è un buon modo per amministrare gli utenti in caso di problemi.
daveh,
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.