it-swarm.com.de

MongoDB: Alle Befehle geben "nicht vom Administrator autorisiert, Befehl auszuführen" aus.

Mongo-Version: 3.2.11

Ich habe mit DigitalOcean ein MongoDB-Tröpfchen gedreht, damit ich eine Datenbank mit meinem kleinen Spiel verbinden kann. Es sind jedoch Komplikationen nach Komplikationen aufgetreten. Ich verbinde mich über PuTTY mit dem Droplet und konnte zuvor "mongo" aufrufen und dann "show dbs" eingeben, um alle aktuellen Datenbanken anzuzeigen.

Ich habe die Datei /etc/mongod.conf geändert, um eine Remoteverbindung zu ermöglichen, und seitdem gibt jeder Befehl, den ich aufrufe, eine Fehlermeldung zurück:

Nur durch eine einfache Show dbs - ich verstehe das.

> show dbs
2016-12-28T00:12:26.655+0000 E QUERY    [thread1] Error: listDatabases failed:{
        "ok" : 0,
        "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
        "code" : 13
} :
[email protected]/mongo/Shell/utils.js:25:13
[email protected]/mongo/Shell/mongo.js:62:1
[email protected]/mongo/Shell/utils.js:761:19
[email protected]/mongo/Shell/utils.js:651:15
@(shellhelp2):1:1

Ich bin so verwirrt darüber, warum dies so ist, und habe das Internet durchsucht, um alles zu finden, was dies möglicherweise lösen könnte.

PS: Ich habe die Datei /etc/mongod.conf geändert, indem ich die Sicherheit kommentiert und die Berechtigung 'enabled' hinzugefügt sowie bindIp: 127.0.0.1 unter net auskommentiert habe.

3

Lass uns das versuchen:

Verbinden Sie sich mit Ihrem DO-Tröpfchen.

Kommentieren Sie in Ihrer Datei /etc/mongod.conf 'security' aus und stellen Sie bindIp auf den Wert 127.0.0.1 wieder her

Starten Sie Ihre Mongod-Instanz neu.

Stellen Sie eine Verbindung zu Mongo her (zu diesem Zeitpunkt ohne Sicherheit).

Erstellen Sie Ihren Administrator in Mongo mit so etwas:

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

Stellen Sie sicher, dass der Benutzer erfolgreich erstellt wurde.

Gehen Sie zurück zu Ihrer /etc/mongod.conf. Stellen Sie Ihren bindIp-Wert wie folgt ein: 127.0.0.1, YOUR_DO_DROPLET_IP (keine Leerzeichen dazwischen).

Kommentieren Sie "Sicherheit" aus, lassen Sie "Authentifizierung" auskommentiert und fügen Sie darunter "Autorisierung: aktiviert" hinzu.

Starten Sie die Mongod-Instanz Ihres Servers neu.

Stellen Sie eine Remote-Verbindung zu mongod her, indem Sie Folgendes verwenden:

mongo YOUR_DO_DROPLET_IP -u myUserAdmin -p --authenticationDatabase admin

Referenzen: MongoDB-AuthentifizierungAktivieren der MongoDB-Authentifizierung

3
moalf