it-swarm.com.de

So sichern Sie MongoDB mit Benutzername und Passwort

Ich möchte die Authentifizierung für Benutzername und Kennwort für meine MongoDB-Instanz einrichten, sodass bei jedem Remotezugriff Benutzername und Kennwort abgefragt werden. Ich habe das Tutorial von der MongoDB-Seite aus ausprobiert und folgendes gemacht:

use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');

Danach stieg ich aus und rannte wieder mongo. Und ich brauche kein Passwort, um darauf zuzugreifen. Auch wenn ich eine Remoteverbindung zur Datenbank herstelle, werde ich nicht zur Eingabe von Benutzername und Kennwort aufgefordert.


UPDATE Hier ist die Lösung, die ich letztendlich verwendet habe

1) At the mongo command line, set the administrator:

    use admin;
    db.addUser('admin','123456');

2) Shutdown the server and exit

    db.shutdownServer();
    exit

3) Restart mongod with --auth

  $ Sudo ./mongodb/bin/mongod --auth --dbpath /mnt/db/

4) Run mongo again in 2 ways:

   i) run mongo first then login:

        $ ./mongodb/bin/mongo localhost:27017
        use admin
        db.auth('admin','123456');

  ii) run & login to mongo in command line.

        $ ./mongodb/bin/mongo localhost:27017/admin -u admin -p 123456

Der Benutzername und das Passwort funktionieren auf die gleiche Weise für mongodump und mongoexport.

350
murvinlai

Sie müssen mongod mit der Option --auth starten, nachdem Sie den Benutzer eingerichtet haben.

Von der MongoDB Site:

Führen Sie die Datenbank (Mongod-Prozess) mit der Option --auth aus, um die Sicherheit zu aktivieren. Sie müssen entweder einen Benutzer zur Admin-Datenbank hinzugefügt haben, bevor Sie den Server mit --auth starten, oder Sie müssen den ersten Benutzer über die localhost-Schnittstelle hinzufügen.

MongoDB-Authentifizierung

104

Wow so viele komplizierte/verwirrende Antworten hier.

Dies ist ab v3.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 Zugriffskontrolle.

mongod --auth --dbpath /data/db

5) Stellen Sie eine Verbindung 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({})

Lange Antwort: Lies dies, wenn du es richtig verstehen willst.

Es ist ganz 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 Authentifizierungsdatenbank admin erstellt. Der Benutzer ist ein dbOwner über die some_db -Datenbank und NICHT über die admin -Datenbank.

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 Zugriffskontrolle.

mongod --auth --dbpath /data/db

5) Stellen Sie eine Verbindung her und authentifizieren Sie sich als Benutzeradministrator für die Authentifizierungsdatenbank admin, NICHT für die Authentifizierungsdatenbank some_db. Der Benutzer Administrator wurde in der admin Authentifizierungsdatenbank erstellt, der Benutzer existiert nicht in der some_db Authentifizierungsdatenbank.

use admin
db.auth("myDbOwner", "abc123")

Sie sind jetzt als dbOwner über die some_db -Datenbank authentifiziert. Wenn Sie also direkt in der 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 weitere Benutzer hinzufügen möchten, die keine Benutzeradministratoren sind und nur normale Benutzer sind, lesen Sie weiter.

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) Beenden 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({})
64
Karl Morrison

Deaktivieren Sie zunächst die Zeile, die mit #auth=true in Ihrer Mongod-Konfigurationsdatei beginnt (Standardpfad /etc/mongo.conf). Dadurch wird die Authentifizierung für Mongodb aktiviert.

Starten Sie dann Mongodb neu: Sudo service mongod restart

60
Shnkc

Diese Antwort ist für Mongo 3.2.1 Referenz

Terminal 1:

$ mongod --auth

Terminal 2:

db.createUser({user:"admin_name", pwd:"1234",roles:["readWrite","dbAdmin"]})

wenn Sie ohne Rollen hinzufügen möchten (optional):

db.createUser({user:"admin_name", pwd:"1234", roles:[]})

um zu überprüfen, ob authentifiziert oder nicht:

db.auth("admin_name", "1234")

es sollte dir geben:

1

sonst:

Error: Authentication failed.
0
43
Sdembla

Hier ist ein Javascript-Code, um Benutzer hinzuzufügen.

  1. Starten Sie mongod mit --auth = true

  2. Greifen Sie über die Mongo Shell auf die Admin-Datenbank zu und übergeben Sie die Javascript-Datei.

    mongo admin "Dateiname.js"

    "Dateiname.js"

    // Adding admin user
    db.addUser("admin_username", " admin_password");
    // Authenticate admin user
    db.auth("admin_username ", " admin_password ");
    // use  database code from Java script
    db = db.getSiblingDB("newDatabase");
    // Adding newDatabase database user  
    db.addUser("database_username ", " database_ password ");
    
  3. Nachdem der Benutzer hinzugefügt wurde, können wir den Zugriff auf die Datenbank von Mongo Shell aus überprüfen

26
Bharadvaj

https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization

Bearbeiten Sie die Mongo-Einstellungsdatei.

Sudo nano /etc/mongod.conf

Fügen Sie die Zeile hinzu:

security.authorization : enabled

Starten Sie den Dienst neu

Sudo service mongod restart

Grüße

11
alicanozkara

Führen Sie zuerst mongoDB auf dem Terminal mit aus

mongod

führen Sie nun Mongo Shell mit folgenden Befehlen aus

    use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

Starten Sie die MongoDB-Instanz mit Zugriffskontrolle neu.

mongod --auth

Authentifizieren Sie sich jetzt über die Befehlszeile mit

mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

Ich las es aus

https://docs.mongodb.com/manual/tutorial/enable-authentication/

8
PRAVESH kumar

Benutzererstellung mit Kennwort für eine bestimmte Datenbank zum Sichern des Datenbankzugriffs:

use dbName

db.createUser(
   {
     user: "dbUser",
     pwd: "dbPassword",
     roles: [ "readWrite", "dbAdmin" ]
   }
)
3
Hasib Kamal

Sie müssen zu der Datenbank wechseln, auf der Sie den Benutzer haben möchten (nicht die Admin-Datenbank) ...

use mydatabase

Weitere Hilfe finden Sie in diesem Beitrag ... https://web.archive.org/web/20140316031938/http://learnmongo.com/posts/quick-tip-mongodb-users/

3
Justin Jenkins

Führen Sie die folgenden Schritte in der angegebenen Reihenfolge aus

  • Erstellen Sie einen Benutzer mit der CLI
use admin
db.createUser(
  {
    user: "admin",
    pwd: "admin123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)
  • Aktivieren Sie die Authentifizierung, die sich je nach Betriebssystem unterscheidet. Wenn Sie Windows verwenden, können Sie einfach mongod --auth im Falle von Linux können Sie die /etc/mongod.conf -Datei bearbeiten, um security.authorization : enabled hinzuzufügen, und anschließend neu starten der mongd service
  • So stellen Sie eine Verbindung über cli mongo -u "admin" -p "admin123" --authenticationDatabase "admin" her. Das ist es

Sie können diesen Beitrag auschecken, um mehr Details zu erfahren und die Verbindung mit Mungo herzustellen.

2
rahil471

Diese Schritte haben bei mir funktioniert:

  1. schreibe mongod --port 27017 auf cmd
  2. dann verbinde dich mit mongo Shell: mongo --port 27017
  3. erstellen Sie den Benutzer admin: Verwenden Sie admin.
  4. trennen Sie die Mongo Shell
  5. starte den mongodb neu: mongod --auth --port 27017
  6. starte mongo Shell: mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
  7. Um sich nach dem Anschließen zu authentifizieren, verbinden Sie die Mongo-Shell mit dem Mongod: mongo --port 27017
  8. zur Authentifizierungsdatenbank wechseln: admin db.auth ("myUserAdmin", "abc123") verwenden
2
Kevin Niasta

Die beste Methode, um eine Verbindung zu mongoDB herzustellen, lautet wie folgt:

  1. Nach der Erstinstallation

    use admin

  2. Führen Sie dann das folgende Skript aus, um einen Administratorbenutzer zu erstellen

    db.createUser( { user: "YourUserName", pwd: "YourPassword", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "clusterAdmin", db: "admin" } ] })

das folgende Skript erstellt den Administratorbenutzer für die Datenbank.

  1. melden Sie sich mit in der Datei db.admin an

    mongo -u YourUserName -p YourPassword admin

  2. Nach der Anmeldung können Sie N Nummern der Datenbank mit dem gleichen oder einem anderen Administrator-Berechtigungsnachweis erstellen, indem Sie die Ziffern 1 bis 3 wiederholen.

Auf diese Weise können Sie verschiedene Benutzer und Kennwörter für die verschiedenen Sammlungen erstellen, die Sie in der MongoDB erstellt haben

1
Balaji.J.B

Das habe ich unter Ubuntu 18.04 gemacht:

$ Sudo apt install mongodb
$ mongo
> show dbs
> use admin
> db.createUser({  user: "root",  pwd: "rootpw",  roles: [ "root" ]  })  // root user can do anything
> use lefa
> db.lefa.save( {name:"test"} )
> db.lefa.find()
> show dbs
> db.createUser({  user: "lefa",  pwd: "lefapw",  roles: [ { role: "dbOwner", db: "lefa" } ]  }) // admin of a db
> exit
$ Sudo vim /etc/mongodb.conf
auth = true
$ Sudo systemctl restart mongodb
$ mongo -u "root" -p "rootpw" --authenticationDatabase  "admin"
> use admin
> exit
$ mongo -u "lefa" -p "lefapw" --authenticationDatabase  "lefa"
> use lefa
> exit
1
Jinmin

vergessen Sie nach dem Erstellen eines neuen Benutzers nicht, grantread/write/root für den Benutzer zuzulassen. Sie können das versuchen

cmd: db.grantRolesToUser('yourNewUsername',[{ role: "root", db: "admin" }])

1
Haisheng Yu