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 admin
Authentifizierungsdatenbank erstellt. Der Benutzer ist dbOwner
über die some_db
Datenbank und NICHT über die admin
Datenbank, 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 admin
Authentifizierungsdatenbank, NICHT mit der some_db
Authentifizierungsdatenbank. Der Benutzeradministrator wurde in der admin
Authentifizierungsdatenbank erstellt, der Benutzer ist in der some_db
Authentifizierungsdatenbank nicht vorhanden .
use admin
db.auth("myDbOwner", "abc123")
Sie werden jetzt als dbOwner
Over-the- some_db
Database authentifiziert . Wenn Sie also direkt in Richtung some_db
Datenbank 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_db
Authentifizierungsdatenbank 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({})