Sto usando la stessa stringa di connessione su locale e produzione. Quando la stringa di connessione èmongodb://localhost/mydb
Qual è il nome utente e la password? È sicuro mantenerlo in questo modo?
Sto usando la stessa stringa di connessione su locale e produzione. Quando la stringa di connessione èmongodb://localhost/mydb
Qual è il nome utente e la password? È sicuro mantenerlo in questo modo?
Risposte:
Per impostazione predefinita, mongodb non ha alcun controllo di accesso abilitato, quindi non ci sono utenti o password predefiniti.
Per abilitare il controllo degli accessi, utilizzare l'opzione della riga di comando --auth
o l'impostazione del file di configurazione security.authorization.
È possibile utilizzare la procedura seguente o fare riferimento a Abilitazione dell'autenticazione nei documenti di MongoDB.
Avvia MongoDB senza controllo di accesso.
mongod --port 27017 --dbpath /data/db1
Connettiti all'istanza.
mongo --port 27017
Crea l'amministratore utente.
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Riavvia l'istanza MongoDB con il controllo degli accessi.
mongod --auth --port 27017 --dbpath /data/db1
Autentica come amministratore utente.
mongo --port 27017 -u "myUserAdmin" -p "abc123" \
--authenticationDatabase "admin"
Oltre a quanto già citato da @Camilo Silva, se vuoi dare libero accesso per creare database, leggere, scrivere database, ecc., Ma non vuoi creare un ruolo di root, puoi modificare il 3 ° passaggio con quanto segue:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" } ]
}
)
Per MongoDB precedenti alla 2.6, il comando per aggiungere un utente root è addUser
(ad esempio)
db.addUser({user:'admin',pwd:'<password>',roles:["root"]})
db.addUser
. A partire dalla 2.6 e nell'attuale versione 3.4.x puoi creare un utente con db.CreateUser
.
db.createUser
;) ( docs.mongodb.com/manual/reference/method/db.createUser )
Oltre alle risposte fornite in precedenza, un'opzione è seguire l'approccio dell''eccezione localhost 'per creare il primo utente se il tuo database è già avviato con il controllo dell'accesso ( --auth
interruttore). Per fare ciò, è necessario disporre dell'accesso localhost al server e quindi eseguire:
mongo
use admin
db.createUser(
{
user: "user_name",
pwd: "user_pass",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" }
]
})
Come indicato nella documentazione di MongoDB:
L'eccezione localhost consente di abilitare il controllo dell'accesso e quindi di creare il primo utente nel sistema. Con l'eccezione localhost, dopo aver abilitato il controllo degli accessi, connettersi all'interfaccia localhost e creare il primo utente nel database admin. Il primo utente deve disporre dei privilegi per creare altri utenti, ad esempio un utente con il ruolo userAdmin o userAdminAnyDatabase. Le connessioni che utilizzano l'eccezione localhost hanno accesso solo per creare il primo utente nel database admin.
Ecco il collegamento a quella sezione dei documenti.