Pytanie jak mogę połączyć się ze zdalnym serwerem mongo z terminalu Mac OS


Chciałbym wpaść w powłokę mongo w terminalu na moim MacBooku. Jednak jestem zainteresowany połączeniem się z instancją Mongo działającą w chmurze (instancja compose.io za pośrednictwem dodatku Heroku). Mam nazwę, hasło, host, port i nazwę bazy danych z identyfikatora URI MongoDB:

mongodb://username:password@somewhere.mongolayer.com:10011/my_database

Zainstalowałem mongodb na moim MacBooku używając Homebrew nie dlatego, że chcę, żeby Mongo działało na moim Macu, ale po to, żeby uzyskać dostęp do programu powłoki Mongo w celu połączenia się z tą zdalną bazą danych.

Jednak nie mogę znaleźć odpowiedniego polecenia, aby uzyskać pełny dostęp do powłoki, jaki chciałbym. Korzystając z instrukcji znajdujących się tutaj http://docs.mongodb.org/manual/reference/program/mongo/ (szukaj "zdalnego") Jestem w stanie uzyskać coś, co wygląda jak połączenie, ale bez podania nazwy użytkownika i hasła nie jestem w pełni połączony. Bieganie db.auth(username, password) zwraca 1 (w przeciwieństwie do "auth failed", gdy podaję niepoprawną nazwę użytkownika i hasło), ale nadal otrzymuję komunikat o nieautoryzowanym błędzie podczas wydawania show dbs dowództwo.


76
2017-11-08 04:52


pochodzenie




Odpowiedzi:


Prawdopodobnie łączysz się dobrze, ale nie masz wystarczających uprawnień do uruchomienia show dbs.

Nie musisz uruchamiać pliku db.auth, jeśli przekazujesz uwierzytelnienie w wierszu poleceń:

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

Czy po nawiązaniu połączenia widzisz kolekcje?

> show collections

Jeśli tak, wszystko jest dobrze i po prostu nie masz uprawnień administratora do bazy danych i nie możesz uruchomić show dbs


136
2017-11-08 05:24



Jestem w stanie połączyć się za pomocą techniki, którą opisujesz. Nie mogę jednak uruchamiać żadnych poleceń, takich jak "pokaż kolekcje" lub "pokaż użytkowników". Chciałbym uzyskać błąd "nie autoryzowany dla zapytania w my_db.system.namespaces". - jononomo
Ok, więc heroku losowo nazwał moją mongo bazę danych inną nazwą od tej, której używałem w dev. Myślę, że to w zasadzie mój problem. - jononomo
Ale jeśli mam? AuthSource = admin na końcu. To nie działa. - authenthenticationDatabase nie pomaga. - RomKazanova
27017 jest domyślnym portem. na wypadek, gdyby przykładowy port nie działał. docs.mongodb.com/manual/reference/default-mongodb-port - change


Z Mongo 3.2 i wyżej po prostu użyj swojego ciągu połączenia tak, jak:

mongo mongodb://username:password@somewhere.mongolayer.com:10011/my_database

35
2017-07-23 09:26



Zwróć uwagę, że aby działać, potrzebujesz powłoki Mongo w wersji 3.2 lub nowszej. Widzieć jira.mongodb.org/browse/SERVER-6233 - Heinrich Filter