Wow so viele komplizierte / verwirrende Antworten hier.
Dies ist ab Version 3.4 .
Kurze Antwort.
1) Starten Sie MongoDB ohne Zugriffskontrolle.
mongod --dbpath /data/db
2) Stellen Sie eine Verbindung zur Instanz her.
mongo
3) Erstellen Sie den Benutzer.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
4) Stoppen Sie die MongoDB-Instanz und starten Sie sie erneut mit der Zugriffskontrolle.
mongod --auth --dbpath /data/db
5) Verbinden Sie sich und authentifizieren Sie sich als Benutzer.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Lange Antwort: Lesen Sie dies, wenn Sie richtig verstehen wollen.
Es ist wirklich einfach. Ich werde das Folgende dumm machen https://docs.mongodb.com/manual/tutorial/enable-authentication/
Wenn Sie mehr darüber erfahren möchten, was die Rollen tatsächlich tun, lesen Sie hier mehr: https://docs.mongodb.com/manual/reference/built-in-roles/
1) Starten Sie MongoDB ohne Zugriffskontrolle.
mongod --dbpath /data/db
2) Stellen Sie eine Verbindung zur Instanz her.
mongo
3) Erstellen Sie den Benutzeradministrator. Im Folgenden wird ein Benutzeradministrator in der adminAuthentifizierungsdatenbank erstellt. Der Benutzer ist dbOwnerüber die some_dbDatenbank und NICHT über die adminDatenbank, dies ist wichtig zu beachten.
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
Oder wenn Sie einen Administrator erstellen möchten, der über eine beliebige Datenbank verwaltet wird:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4) Stoppen Sie die MongoDB-Instanz und starten Sie sie erneut mit der Zugriffskontrolle.
mongod --auth --dbpath /data/db
5) Verbinden und authentifizieren Sie sich als Benutzeradministrator mit der adminAuthentifizierungsdatenbank, NICHT mit der some_dbAuthentifizierungsdatenbank. Der Benutzeradministrator wurde in der adminAuthentifizierungsdatenbank erstellt, der Benutzer ist in der some_dbAuthentifizierungsdatenbank nicht vorhanden .
use admin
db.auth("myDbOwner", "abc123")
Sie werden jetzt als dbOwnerOver-the- some_dbDatabase authentifiziert . Wenn Sie also direkt in Richtung some_dbDatenbank lesen / schreiben / arbeiten möchten, können Sie zu dieser wechseln.
use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.
Weitere Informationen zu Rollen: https://docs.mongodb.com/manual/reference/built-in-roles/
Wenn Sie zusätzliche Benutzer erstellen möchten, die keine Benutzeradministratoren sind und nur normale Benutzer sind, lesen Sie weiter unten.
6) Erstellen Sie einen normalen Benutzer. Dieser Benutzer wird in der some_dbAuthentifizierungsdatenbank unten erstellt.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
7) Verlassen Sie die Mongo-Shell, stellen Sie die Verbindung wieder her und authentifizieren Sie sich als Benutzer.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})