2014-11-08 12 views
67

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 imię, nazwisko, hasło, host, port i nazwę bazy danych z MongoDB URI:jak mogę połączyć się ze zdalnym serwerem mongo z terminala Mac OS

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

Mam zainstalowany MongoDB na moim MacBooku użyciu nie Homebrew bo chcę Mongo działa na moim Macu, ale wystarczy, aby uzyskać dostęp do programu powłoki Mongo w celu połączenia 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") Mogę uzyskać to, co wygląda jak połączenie, ale bez podawania nazwy użytkownika lub hasła nie jestem w pełni podłączony. Uruchamianie 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 komendy show dbs.

Odpowiedz

123

Prawdopodobnie łączysz się dobrze, ale nie masz wystarczających uprawnień, aby uruchomić show dbs.

Nie trzeba uruchomić db.auth jeśli przejdą uwierzytelniania w wierszu poleceń:

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

Po podłączeniu jesteś w stanie zobaczyć kolekcje?

> show collections 

Jeśli więc wszystko jest dobrze, a ty po prostu nie mają uprawnień administratora do bazy danych i nie można uruchomić show dbs

+0

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

+1

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

+0

Ale jeśli mam? AuthSource = admin na końcu. To nie działa. - authenthentationDatabase nie pomaga. – RomKazanova

30

Z Mongo 3.2 and higher wystarczy użyć ciąg połączenia jak:

mongo mongodb://username:[email protected]:10011/my_database 
+3

Pamiętaj, że aby działać, potrzebujesz powłoki Mongo w wersji 3.2 lub nowszej. Zobacz https://jira.mongodb.org/browse/SERVER-6233 –

Powiązane problemy