2015-01-05 11 views
12

Sto iniziando con MongoDB e desidero l'accesso utente/passaggio al dbs. La prima cosa che ho fatto è stato quello di creare e utente admin e iniziare MongoDB con auth attivare, questo è il mio utente creato:Errore: impossibile aggiungere l'utente: non autorizzato sul test per eseguire il comando {createUser:

db.getUser("admin") 
{ 
     "_id" : "admin.admin", 
     "user" : "admin", 
     "db" : "admin", 
     "roles" : [ 
       { 
         "role" : "dbAdminAnyDatabase", 
         "db" : "admin" 
       }, 
       { 
         "role" : "clusterAdmin", 
         "db" : "admin" 
       } 
     ] } 
} 

Dopo di che, io cerco di creare utenti con i seguenti comandi:

use newdb 
db.createUser(
    { 
    user: "newuser", 
    pwd: "12345678", 
    roles: [ { role: "readWrite", db: "newdb" } ] 
    } 
) 

ma ho ottenuto questo errore:

Error: couldn't add user: not authorized on newdb to execute command { createUser: "newuser", pwd: "xxx", roles: [ { role: "readWrite", db: "newdb" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 30000.0 } } at src/mongo/shell/db.js:1004

googled su di esso, ma ci sono solo due risultati, uno sulla cinese e l'altro non legati, quindi sono un po 'perso. Qualche idea ? Sembra che il mio utente amministratore non dispone di privilegi, ho accedere al MongoDB con il seguente comando:

$mongo --port 27017 -u adminUser -p adminPass --authenticationDatabase admin 

Grazie in anticipo.

+1

Non è stato incluso il ruolo 'userAdmin'/userAdminAnyDatabase' nell'utente admin. 'dbAdminAnyDatabase' e' clusterAdmin' non includono i privilegi di gestione degli utenti. – wdberkeley

+0

Questo era il problema. Bene, questo è stato il mio primo incontro con mongodb :) Grazie mille! – brb

risposta

4

Sotto comando dice, hai creato utente amministratore e password.

db.getUser("admin")  
{  
     "_id" : "admin.admin", 
     "user" : "admin",  
     "db" : "admin",  
     "roles" : [  
       {  
         "role" : "dbAdminAnyDatabase",  
         "db" : "admin"  
       },  
       {  
         "role" : "clusterAdmin",  
         "db" : "admin"  
       }  
     ] }  
}  

Una volta creato l'utente e la password, Mongo non vi permetterà di fare qualsiasi aggiornamento dello schema come normale un utente amministratore per il quale il login in precedenza.

Utilizzare utente amministratore e password appena creati per creare nuovi utenti o effettuare aggiornamenti. Dovrebbe funzionare.

0

Si dovrebbe uscire dal processo corrente di mongod e riavviarlo di nuovo senza parametro --auth.

del tipo di terminali: mongod

Dopo il processo di mongod viene avviato allora si può aprire nuova scheda terminale per eseguire comandi di shell mongo:

mongo --shell 
use new_your_database 
db.createUser(
    { 
    user: "mongo_admin", 
    pwd: "mongo_admin", 
    roles: [ "readWrite", "dbAdmin" ] 
    } 
) 

dovrebbe essere fatto con successo ....

5

arrestare l'istanza in esecuzione di mongod mongod --config /usr/local/etc/mongod.conf --auth

quindi iniziare senza --auth come mongod --config /usr/local/etc/mongod.conf

quindi aggiornare i ruoli like

db.updateUser("admin",{roles : ["userAdminAnyDatabase","userAdmin","readWrite","dbAdmin","clusterAdmin","readWriteAnyDatabase","dbAdminAnyDatabase"]});

Ora di nuovo iniziare mongod con --auth e provare.


L'idea è che devi creare un utente nel database "admin" con tutti i RUOLI menzionati sopra.

Ma questo utente non fa parte di altri database.Quindi una volta che si è creato l'utente admin,

poi login come utente amministratore,

SERVER: mongod --config /usr/local/etc/mongod.conf --auth

CLIENT: ./mongodb/bin/mongo localhost:27017/admin -u adminUser -p 123456

use APPLICATION_DB 

di nuovo creare un nuovo utente (ad esempio APP_USER) per questo APPLICATION_DB. Questa volta per questo utente dell'applicazione è necessario solo il ruolo "dbOwner".

db.createUser({user:"test", pwd:"test", roles:['dbOwner']}) 

Ora l'applicazione deve utilizzare questo APP_USER e APP_DB.

Problemi correlati