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

101

Chciałbym wpaść do powłoki mongo w terminalu mojego MacBooka. Jednak jestem zainteresowany połączeniem się z instancją Mongo, która działa w chmurze (instancja compose.io przez dodatek Heroku). Mam nazwę, hasło, hosta, port i nazwę bazy danych z identyfikatora URI MongoDB:

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

Zainstalowałem mongodb na moim MacBooku przy użyciu Homebrew nie dlatego, że chcę, aby Mongo działało na moim Macu, ale tylko po to, aby uzyskać dostęp do programu powłoki mongo, aby połączyć się z tą zdalną bazą danych.

Jednak nie mogę znaleźć odpowiedniego polecenia, aby uzyskać pełny dostęp do powłoki, który chciałbym. Korzystając z instrukcji znajdujących się tutaj http://docs.mongodb.org/manual/reference/program/mongo/ (wyszukaj „zdalne”) jestem w stanie uzyskać coś, co wygląda na połączenie, ale bez podawania nazwy użytkownika i hasła nie jestem w pełni podłączony. Uruchomienie db.auth(username, password)zwraca 1 (w przeciwieństwie do „niepowodzenia uwierzytelniania”, gdy podam nieprawidłową nazwę użytkownika i hasło), ale nadal otrzymuję komunikat o błędzie „nieautoryzowany” podczas wydawania show dbspolecenia.

jononomo
źródło

Odpowiedzi:

170

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

Nie musisz uruchamiać db.auth, jeśli podasz autoryzację w linii poleceń:

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

Czy po nawiązaniu połączenia możesz przeglądać kolekcje?

> show collections

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

Ben
źródło
Jestem w stanie połączyć się za pomocą opisanej przez Ciebie techniki. Nie mogę jednak uruchamiać żadnych poleceń, takich jak „pokaż kolekcje” lub „pokaż użytkowników”. Chciałbym otrzymać błąd „brak autoryzacji do zapytania o my_db.system.namespaces”.
jononomo
1
Ok, więc heroku losowo nazwał moją bazę danych mongo inną nazwą niż ta, której używałem w dev. Myślę, że to był mój problem.
jononomo
1
Ale jeśli na końcu otrzymam? AuthSource = admin. To nie działa. --authenticationDatabase nie pomaga.
Roman Kazanovskyi,
Jednak 27017 jest portem domyślnym. na wypadek gdyby przykładowy port nie działał. docs.mongodb.com/manual/reference/default-mongodb-port
zmiana
52

W Mongo 3.2 i nowszych po prostu użyj parametrów połączenia w takiej postaci:

mongo mongodb://username:[email protected]:10011/my_database
Amio.io
źródło
0

Innym sposobem na to jest:

mongo mongodb://mongoDbIPorDomain:port
KayV
źródło