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?
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:
Standardmäßig hat mongodb keine aktivierte Zugriffskontrolle, daher gibt es keinen Standardbenutzer oder kein Standardkennwort.
Verwenden Sie zum Aktivieren der Zugriffssteuerung entweder die Befehlszeilenoption --auth
oder die Einstellung der Konfigurationsdatei security.authorization.
Sie können das folgende Verfahren verwenden oder unter Aktivieren der Authentifizierung in den MongoDB-Dokumenten nachlesen.
Starten Sie MongoDB ohne Zugriffskontrolle.
mongod --port 27017 --dbpath /data/db1
Stellen Sie eine Verbindung zur Instanz her.
mongo --port 27017
Erstellen Sie den Benutzeradministrator.
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Starten Sie die MongoDB-Instanz mit der Zugriffssteuerung neu.
mongod --auth --port 27017 --dbpath /data/db1
Authentifizieren Sie sich als Benutzeradministrator.
mongo --port 27017 -u "myUserAdmin" -p "abc123" \
--authenticationDatabase "admin"
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" } ]
}
)
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"]})
db.addUser
. Ab 2.6 und in der aktuellen Version 3.4.x können Sie einen Benutzer mit erstellen db.CreateUser
.
db.createUser
;) ( docs.mongodb.com/manual/reference/method/db.createUser )
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 ( --auth
Switch) 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.