Problema nella creazione di due DB visibili e modificabili solo per un utente

Ultimo aggiornamento 11 mesi fa
Fbcyborg
11 mesi fa

Ciao a tutti,

da poco esperto MongoDB e da lettore accanito della documentazione ufficiale non riesco a creare due database tali per cui un utente abbia i massimi privilegi su di essi.

So che sono le basi, ma il risultato che ottengo non è quello che vorrei.

Ho abilitato l'autenticazione sul server di MongoDB e mi sono autenticato come admin per poi creare i database.

Quello che non capisco è se l'utenza per questi due DB va creata su admin oppure su ciascuno dei due DB e successivamente dargli le grant (oppure sia su admin sia su ciascun DB).

Se creo l'utente come admin.username, questo vedrà tutti i database, ma se creo questo utente su ciascun DB, ad ogni connessione al DB vedrò solo un database (quello per cui tale utente è associato).


Come vanno create le utenze e i DB in modo tale che se io utilizzo un client (e.g. Robo3T), creo una connessione e sotto quella connessione vedo entrambi i db che mi servono?


Nel frattempo ho trovato questo dove si dice che gli utenti possono essere creati in qualsiasi database quindi ho optato per admin.
Successivamente ho creato l'utenza in questo modo:

use admin
db.createUser({
    user: "username",
    pwd: "password",
    roles : [
        { role : "dbOwner", db : "DB_1" },
        { role : "dbOwner", db : "DB_2" },
        { role : "readWrite", db : "DB_1" },
        { role : "readWrite", db : "DB_2" },
        { role : "userAdmin", db: "DB_1" },
        { role : "userAdmin", db: "DB_2" }
    ]
})

Ora il problema è che non riesco a vedere i database una volta che mi sono autenticato con questo utente:

Error: listDatabases failed:{
    "ok" : 0,
    "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
    "code" : 13,
    "codeName" : "Unauthorized"
}


Grazie in anticipo.