Domanda

Mi sono aggiornato da 2,4 a 2.6 e autenticazione rotto. Questo tutorial sembra abbastanza semplice ma continuo a essere bloccato dal mio database. La mia situazione è piuttosto semplice, ho un singolo server Mongo e ho bisogno di una combinazione utente / pwd per connettersi.

Prima mi connetto tramite l'eccezione localhost come menzionato. Quindi creo l'utente amministratore come suggerito:

use admin
db.createUser(
  {
    user: "myadmin",
    pwd: "mysecret",
    roles:
    [
      {
        role: "userAdminAnyDatabase",
        db: "admin"
      }
    ]
  }
)
.

Ora è il momento di aggiungere nuovi utenti in modo da controllare la sanità mentale, ho logout del guscio. Ora quando digito "MONGO" fallisce. Quello usato per funzionare ma ok, non sta vedendo una password del nome utente e immagino che l'eccezione localhost non ci sia più quindi segui le istruzioni delineate qui :

mongo --port 27017 -u myadmin -p mysecret --authenticationDatabase admin
.

E ottengo:

MongoDB shell version: 2.6.0
connecting to: 127.0.0.1:27017/test
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
>
.

Qualche idea su come:

    .
  1. Setup mongo 2.6 Quindi posso facilmente entrare e uscire dalla shell Gestione dei database (penserei che questo sia l'utente "Amministratore utente del sistema")

  2. Abilita un utente da un client remoto per connettersi? (Solo il lato mongo, nessun aiuto necessario con iptables ...)

  3. Grazie!

È stato utile?

Soluzione

Apparentemente l'amministratore "System User Administrator" non è sufficiente.Creare un utente root:

> db.createUser({user:"someadmin",pwd:"secret", roles:[{role:"root",db:"admin"}]})
.

Quindi aggiungi il tuo database utente:

> use some_db
> db.createUser(
    {
      user: "mongouser",
      pwd: "someothersecret",
      roles: ["readWrite"]
    }
)
.

Maggiori dettagli su Questo gist .Commenti su GIST e migliori risposte su così benvenuto - Io non sono un amministratore sys

Altri suggerimenti

1) Il ruolo che si assegna all'utente di Amministratore - USERADminyDatabase - non ha privilegi illimitati. È solo un ruolo che è autorizzato a creare e gestire gli utenti su qualsiasi database. Apparentemente, per impostazione predefinita è limitato dall'esecuzione di determinati comandi che non sono direttamente correlati alla gestione degli utenti del database (ad esempio il recupero degli avvisi di avvio dal registro, interrogare lo stato del server, ecc.).

È possibile utilizzare il ruolo "root" invece come suggerisce Tony. Se hai intenzione di utilizzare l'account root per eseguire configurazione e gestione e quindi avere alcuni account di lettura / scrittura di base con i conti privilegiati che parlano al database, questo probabilmente rende il più senso.

2) In generale, il collegamento sul lato client richiede solo la chiamata della funzione DB.Authenticate () dopo il collegamento dal codice client. Esistono diversi modi per farlo a seconda del conducente / lingua che si sta utilizzando per un client. Il codice del driver Node.js è piuttosto tipico: http: / /monongodb.github.io/node-mongodb-native/api-enerated/db.html#authenticate

Anche dopo aver seguito il metodo di @ Tony che stavo ottenendo un

`com.mongodb.CommandFailureException:`
.

Aggiunta

compile 'org.mongodb:mongo-java-driver:2.13.1'
.

in Sezione Dipendenza di BuildConfig.Groovy ha comunque fissato il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top