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.