Istruzioni per aggiungere un utente a un database mongo per mongo_orm

Non volete che la vostra applicazione web acceda al database usando l'utente amministratore del database. Inoltre si vuole che acceda solo a uno specifico database - forse avete altri database in esecuzione nella vostra istanza di mongo.

Prerequisiti:

mongo_orm si aspetta la configurazione del database come variabili d'ambiente o come un file config/database.yml nel tuo progetto.

Il file config/database.yml si presenta così:

database_url: mongodb://janet:test@hostname:27017
nome_database: dbname

e 27017 è il numero di porta predefinito di mongo - se lo imposti su qualcos'altro, cambialo.

l'utente è "janet"

e la password è "test" in questo esempio.

Creare un nuovo utente sull'istanza mongo, usando la console mongo

Accedi alla tua istanza di mongo. Esegui il comando mongo:

mongo

(Presumo che la vostra istanza di mongo si colleghi a localhost, alla porta predefinita).

Questo vi darà la console di mongo.

Importante: è necessario passare al database dell'amministratore per autenticarsi!

usare admin

db.auth("admin","")

cambia con la password di amministrazione che hai impostato. Per favore, ignora la stupida abitudine di WordPress di cambiare le virgolette. Queste dovrebbero essere tutte normali virgolette doppie.

Importante: Fare non cambiare il database nel database di destinazione per creare il nuovo utente! Rimanete sul database dell'amministratore!

db.createUser(

{

utente: "janet",

pwd: "test",

ruoli: [{ role: "readWrite", db: "dbname" }],

passwordDigestor: "server",

meccanismi: [“SCRAM-SHA-1″,”SCRAM-SHA-256”]

}

)

Nota: entrambi i meccanismi sono richiesti! Se si specifica solo SCRAM-SHA-256, mongo orm non sarà in grado di accedere.

passwordDigestor DEVE essere "server". Esso non può essere vero. Si prega di notare che sembra esserci una differenza tra mongo console e mongo API. (nell'API di mongo useresti digestPassword: true

questo darà all'utente janet, con la password di prova, il ruolo readWrite su dbname.

Leggi di più sui ruoli qui.

cancellare un utente

usare admin

db.dropUser("janet")

Debugging

https://github.com/Studio3T/robomongo/issues/1041

Robo T3 non sembra essere in grado di creare correttamente gli utenti, usa il mio metodo da console qui sopra.

(È comunque in grado di creare database).

immagine

come dice il dialogo, non puoi usare digestPassword attraverso Robo T3 o la console Mongo. Usa passwordDigestor: "server" invece. In ogni caso, Robo T3 non sembra essere in grado di creare correttamente gli utenti - usa la console.

db.serverStatus()

se questo comando ti dà:

> db.serverStatus()

{

"ok" : 0,

"errmsg" : "il comando serverStatus richiede l'autenticazione",

"codice" : 13,

"codeName" : "Non autorizzato"

}

Allora non sei loggato - mostrerà una lunga lista di informazioni sul tuo server quando sei loggato.

Troppi utenti sono autenticati

2019-02-09T13:53:09.972+0000 E QUERY [js] Errore: impossibile aggiungere utente: troppi utenti autenticati

_getErrorWithCode@src/mongo/shell/utils.js:25:13

DB.prototype.createUser@src/mongo/shell/db.js:1491:15

Se iniziate ad autenticarvi come altri utenti per testare il login, questo accadrà. uscite dalla console, fate di nuovo il login e autenticatevi solo una volta come admin prima di creare nuovi utenti.

Autenticazione fallita

Messaggio: 'Dominio: 1, codice: 11, Autenticazione fallita.

Otterrete questo codice di errore da mongo orm se mongo orm non può autenticarsi. Resistete all'impulso di usare semplicemente il db come amministratore. Rileggete le informazioni che ho dato qui. Assicuratevi che:

  • si crea il nuovo utente usando la console mongo
  • avete specificato SCRAM-SHA-1
  • l'utente è stato creato mentre era nel database dell'amministratore ("usare admin" !!)
  • avete impostato i ruoli correttamente