Anleitung zum Hinzufügen eines Benutzers zu einer Mongo-Datenbank für mongo_orm

Sie möchten nicht, dass Ihre Webanwendung über Ihren Datenbankadministrator auf die Datenbank zugreift. Außerdem möchten Sie, dass sie nur auf eine bestimmte Datenbank - vielleicht haben Sie zusätzliche Datenbanken in Ihrer Mongo-Instanz laufen.

Voraussetzungen:

mongo_orm erwartet die Datenbankkonfiguration als Umgebungsvariablen oder als Datei config/database.yml in Ihrem Projekt.

Die Datei config/database.yml sieht wie folgt aus:

datenbank_url: mongodb://janet:test@hostname:27017
datenbank_name: dbname

und 27017 ist die Standard-Portnummer von Mongo - wenn Sie sie auf etwas anderes eingestellt haben, ändern Sie sie.

Benutzer ist "janet"

und das Passwort ist in diesem Beispiel "test".

Anlegen eines neuen Benutzers auf der Mongo-Instanz unter Verwendung der Mongo-Konsole

Melden Sie sich bei Ihrer Mongo-Instanz an. Führen Sie den Befehl mongo:

mongo

(Ich gehe davon aus, dass Ihre Mongo-Instanz an localhost mit dem Standard-Port gebunden ist).

Dadurch erhalten Sie die Mongo-Konsole.

Wichtig! Sie müssen in die Admin-Datenbank wechseln, um sich zu authentifizieren!

Admin verwenden

db.auth("admin","")

ändern Sie in das von Ihnen festgelegte Administrator-Passwort. Bitte ignorieren Sie die dumme Angewohnheit von WordPress, die Anführungszeichen zu ändern. Dies sind alles normale doppelte Anführungszeichen.

Wichtig! Do nicht Wechseln Sie die Datenbank zur Zieldatenbank, um den neuen Benutzer anzulegen! Bleiben Sie auf der Admin-Datenbank!

db.createUser(

{

Benutzer: "janet",

pwd: "test",

Rollen: [{ role: "readWrite", db: "dbname" }],

KennwortDigestor: "Server",

Mechanismen: [“SCRAM-SHA-1″,”SCRAM-SHA-256”]

}

)

Hinweis: Beide Mechanismen sind erforderlich! Wenn Sie nur SCRAM-SHA-256 angebenkann sich mongo orm nicht anmelden.

passwordDigestor MUSS "server" sein. Es kann nicht wahr sein. Bitte beachten Sie, dass es einen Unterschied zwischen der Mongo-Konsole und der Mongo-API zu geben scheint. (In der Mongo-API würden Sie digestPassword: true verwenden.

Dies gibt dem Benutzer janet mit dem Passwort test die Rolle readWrite auf dbname.

Lesen Sie hier mehr über Rollen.

Löschung eines Benutzers

Admin verwenden

db.dropUser("janet")

Fehlersuche

https://github.com/Studio3T/robomongo/issues/1041

Robo T3 scheint nicht in der Lage zu sein, Benutzer ordnungsgemäß zu erstellen, verwenden Sie meine Konsolenmethode oben.

(Es ist jedoch in der Lage, Datenbanken zu erstellen).

Bild

wie der Dialog sagt, können Sie digestPassword nicht über Robo T3 oder die Mongo-Konsole verwenden. Verwenden Sie stattdessen passwordDigestor: "Server" stattdessen. In jedem Fall scheint Robo T3 nicht in der Lage zu sein, die Benutzer richtig zu erstellen - verwenden Sie die Konsole.

db.serverStatus()

wenn Sie diesen Befehl erhalten:

> db.serverStatus()

{

"ok" : 0,

"errmsg" : "Befehl serverStatus erfordert Authentifizierung",

"code" : 13,

"codeName" : "Unerlaubt"

}

Dann sind Sie nicht eingeloggt - es wird eine lange Liste von Informationen über Ihren Server angezeigt, wenn Sie eingeloggt sind.

Zu viele Benutzer sind authentifiziert

2019-02-09T13:53:09.972+0000 E QUERY [js] Fehler: Benutzer konnte nicht hinzugefügt werden: zu viele Benutzer sind authentifiziert

_getErrorWithCode@src/mongo/shell/utils.js:25:13

DB.prototype.createUser@src/mongo/shell/db.js:1491:15

Verlassen Sie die Konsole, melden Sie sich erneut an und authentifizieren Sie sich nur einmal als Administrator, bevor Sie neue Benutzer anlegen.

Authentifizierung fehlgeschlagen

Nachricht: 'Bereich: 1, Code: 11, Authentifizierung fehlgeschlagen.'

Sie erhalten diesen Fehlercode von mongo orm, wenn mongo orm sich nicht authentifizieren kann. Widerstehen Sie dem Impuls, die Datenbank einfach als Administrator zu verwenden. Lesen Sie noch einmal die Informationen, die ich hier gegeben habe. Stellen Sie das sicher:

  • Sie erstellen den neuen Benutzer über die Mongo-Konsole
  • Sie haben SCRAM-SHA-1 angegeben
  • der Benutzer wurde erstellt, während er sich in der Verwaltungsdatenbank befand ("Admin verwenden" !!)
  • Sie haben die Rollen richtig verteilt