MongoDB Was sind der Standardbenutzer und das Standardkennwort?


92

Ich verwende die gleiche Verbindungszeichenfolge für lokale und Produktionszwecke. Wenn die Verbindungszeichenfolge istmongodb://localhost/mydb

Wie lautet der Benutzername und das Passwort? Ist es sicher, es so zu halten?

Antworten:


197

Standardmäßig hat mongodb keine aktivierte Zugriffskontrolle, daher gibt es keinen Standardbenutzer oder kein Standardkennwort.

Verwenden Sie zum Aktivieren der Zugriffssteuerung entweder die Befehlszeilenoption --authoder die Einstellung der Konfigurationsdatei security.authorization.

Sie können das folgende Verfahren verwenden oder unter Aktivieren der Authentifizierung in den MongoDB-Dokumenten nachlesen.

Verfahren

  1. Starten Sie MongoDB ohne Zugriffskontrolle.

    mongod --port 27017 --dbpath /data/db1
  2. Stellen Sie eine Verbindung zur Instanz her.

    mongo --port 27017
  3. Erstellen Sie den Benutzeradministrator.

    use admin
    db.createUser(
      {
        user: "myUserAdmin",
        pwd: "abc123",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }
    )
  4. Starten Sie die MongoDB-Instanz mit der Zugriffssteuerung neu.

    mongod --auth --port 27017 --dbpath /data/db1
  5. Authentifizieren Sie sich als Benutzeradministrator.

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

16
Wenn der Benutzer mit der Rolle userAdminAnyDatabase erstellt wurde, kann keine Datenbank erstellt werden. Daher sollte der Abschnitt Rollen lauten: Rollen: [{Rolle: "root", Datenbank: "admin"}]
Georgeos


1
Wenn Sie den Datenbankpfad finden möchten, verwenden Sie: grep dbPath /etc/mongod.conf
rckd

13

Zusätzlich zu dem, was @Camilo Silva bereits erwähnt hat, können Sie den dritten Schritt wie folgt ändern, wenn Sie freien Zugriff zum Erstellen von Datenbanken, Lesen, Schreiben von Datenbanken usw. gewähren möchten, aber keine Stammrolle erstellen möchten:

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


0

Zusätzlich zu den zuvor bereitgestellten Antworten besteht eine Option darin, den Ansatz der "lokalen Host-Ausnahme" zu befolgen, um den ersten Benutzer zu erstellen, wenn Ihre Datenbank bereits mit der Zugriffssteuerung ( --authSwitch) gestartet wurde . Dazu müssen Sie localhost-Zugriff auf den Server haben und dann Folgendes ausführen:

mongo
use admin
db.createUser(
 {
     user: "user_name",
     pwd: "user_pass",
     roles: [
           { role: "userAdminAnyDatabase", db: "admin" },
           { role: "readWriteAnyDatabase", db: "admin" },
           { role: "dbAdminAnyDatabase", db: "admin" }
        ]
 })

Wie in der MongoDB-Dokumentation angegeben:

Mit der localhost-Ausnahme können Sie die Zugriffssteuerung aktivieren und dann den ersten Benutzer im System erstellen. Stellen Sie mit der localhost-Ausnahme nach dem Aktivieren der Zugriffssteuerung eine Verbindung zur localhost-Schnittstelle her und erstellen Sie den ersten Benutzer in der Admin-Datenbank. Der erste Benutzer muss über Berechtigungen zum Erstellen anderer Benutzer verfügen, z. B. eines Benutzers mit der Rolle userAdmin oder userAdminAnyDatabase. Verbindungen, die die localhost-Ausnahme verwenden, haben nur Zugriff, um den ersten Benutzer in der Administratordatenbank zu erstellen.

Hier ist der Link zu diesem Abschnitt der Dokumente.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.