Wie kann ich vom Mac OS-Terminal aus eine Verbindung zu einem Remote-Mongo-Server herstellen?

101

Ich möchte in die Mongo-Shell im Terminal meines MacBook eintauchen. Ich bin jedoch daran interessiert, eine Verbindung zu einer Mongo-Instanz herzustellen, die in der Cloud ausgeführt wird (compose.io-Instanz über das Heroku-Addon). Ich habe den Namen, das Passwort, den Host, den Port und den Datenbanknamen aus der MongoDB-URI:

mongodb://username:[email protected]:10011/my_database

Ich habe mongodb mit Homebrew auf meinem MacBook installiert, nicht weil ich möchte, dass Mongo auf meinem Mac ausgeführt wird, sondern nur, um Zugriff auf das mongo-Shell-Programm zu erhalten, um eine Verbindung zu dieser entfernten Datenbank herzustellen.

Ich kann jedoch nicht den richtigen Befehl finden, um den vollständigen Shell-Zugriff zu erhalten, den ich möchte. Mit den Anweisungen hier http://docs.mongodb.org/manual/reference/program/mongo/ (Suche nach "remote") kann ich eine Verbindung herstellen, ohne meinen Benutzernamen oder mein Passwort anzugeben voll verbunden. Das Ausführen db.auth(username, password)gibt 1 zurück (im Gegensatz zu "auth failed", wenn ich einen falschen Benutzernamen und ein falsches Kennwort eingebe), aber ich erhalte weiterhin eine "nicht autorisierte" Fehlermeldung, wenn der show dbsBefehl ausgegeben wird.

Jononomo
quelle

Antworten:

170

Sie stellen wahrscheinlich eine gute Verbindung her, verfügen jedoch nicht über ausreichende Berechtigungen zum Ausführen show dbs.

Sie müssen die Datei db.auth nicht ausführen, wenn Sie die Authentifizierung in der Befehlszeile übergeben:

mongo somewhere.mongolayer.com:10011/my_database -u username -p password

Sobald Sie eine Verbindung hergestellt haben, können Sie Sammlungen anzeigen?

> show collections

Wenn ja, ist alles in Ordnung und Sie haben einfach keine Administratorrechte für die Datenbank und können die nicht ausführen show dbs

Ben
quelle
Ich kann mich mit der von Ihnen beschriebenen Technik verbinden. Ich kann jedoch keine Befehle ausführen, z. B. "Sammlungen anzeigen" oder "Benutzer anzeigen". Ich möchte den Fehler "Nicht zur Abfrage auf my_db.system.namespaces autorisiert" erhalten.
Jononomo
1
Ok, also hat Heroku meiner Mongo-Datenbank zufällig einen anderen Namen gegeben als den, den ich in dev verwendet habe. Ich denke, das war im Grunde mein Problem.
Jononomo
1
Aber wenn ich am Ende? AuthSource = admin habe. Es funktioniert nicht. --authenticationDatabase hilft nicht.
Roman Kazanovskyi
27017 ist jedoch der Standardport. Nur für den Fall, dass der Beispielport nicht funktioniert. docs.mongodb.com/manual/reference/default-mongodb-port
Änderung
51

Verwenden Sie in Mongo 3.2 und höher einfach Ihre Verbindungszeichenfolge wie folgt:

mongo mongodb://username:[email protected]:10011/my_database
Amio.io
quelle
0

Ein anderer Weg, dies zu tun, ist:

mongo mongodb://mongoDbIPorDomain:port
KayV
quelle