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?

Juan Pablo Fernandez
quelle

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"
Camilo Silva
quelle
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
4
Bitte verlinken Sie den Originalbeitrag aus dem MongoDB-Handbuch
Nathan Cho
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" } ]
  }
)
Razvan Dumitru
quelle
4

Für MongoDB vor 2.6 lautet der Befehl zum Hinzufügen eines Root-Benutzers addUser(z.

db.addUser({user:'admin',pwd:'<password>',roles:["root"]})
Schwarz
quelle
1
Bis Version 2.6 hatten Sie db.addUser. Ab 2.6 und in der aktuellen Version 3.4.x können Sie einen Benutzer mit erstellen db.CreateUser.
Razvan Dumitru
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.

Fjut
quelle