Come specificare il database di autenticazione e il database di destinazione separatamente sull'URI della connessione mongodb?


13

Sto usando l'URI di connessione per connettersi a MongoDB: mongodb://user:password@localhost/admin. Utilizzerà admincome autenticazione bot e database di destinazione. Come posso fare in modo che l'uri utilizzi admincome autenticazione ma mi consenta di collegarmi a un database diverso? Vedi sotto il comando come esempio:

mongo --host localhost -u user -p password --authentication admin test

il comando precedente utilizzerà admincome database di autenticazione ma si collega al testdatabase. come posso fare la stessa cosa su uri?

Risposte:


26

Sì .. Facilmente!

mongo "mongodb://test:testpwd@localhost/test?authSource=admin"
MongoDB shell version v3.4.6
connecting to: mongodb://test:testpwd@localhost/test?authSource=admin
MongoDB server version: 3.4.6
MongoDB> db
test
MongoDB> 

Metti il ​​tuo DB di destinazione alla fine della stringa "base" e aggiungi il db di autenticazione al parametro authSource


Sì, questo è esattamente quello che sto cercando. Grazie
Joey Yi Zhao,

4

Rif:

https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options

Sarà necessario utilizzare il formato seguente e non è necessario utilizzare il database di amministrazione.

MongoDB: // utente: password @ localhost / test authSource = admin

/ database Facoltativo. Il nome del database da autenticare se la stringa di connessione include credenziali di autenticazione sotto forma di nome utente: password @. Se / database non viene specificato e la stringa di connessione include credenziali, il driver eseguirà l'autenticazione nel database di amministrazione.

Assicurati di avere un utente nel testdatabase. Vedi la sezione 6 di questo documento.

Abilita autent

Crea altri utenti secondo necessità per la tua distribuzione.

Il database in cui si crea l'utente (in questo esempio, test) è il database di autenticazione dell'utente. Sebbene l'utente esegua l'autenticazione in questo database, l'utente può avere ruoli in altri database; cioè il database di autenticazione dell'utente non limita i privilegi dell'utente.

use test
db.createUser(
  {
    user: "myTester",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

Ho provato questo uri ma non funziona. Perché tenta di utilizzare testcome database di autenticazione che non è corretto. Devo utilizzare admincome database di autenticazione e connettermi al testdatabase.
Joey Yi Zhao,

Risposta modificata.
SqlWorldWide,

Grazie per la risposta. Ma non voglio cambiare il ruolo dell'utente sull'istanza del database. Esiste una soluzione per non apportare modifiche all'istanza?
Joey Yi Zhao,

Ecco come è progettato da MongoDB.
SqlWorldWide,

Questo significa che non riesco a raggiungere questo obiettivo da Mongo Uri?
Joey Yi Zhao,
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.