2014-11-08 7 views
67

Vorrei entrare nella shell mongo nel terminale sul mio MacBook. Tuttavia, sono interessato a connettermi a un'istanza di Mongo che è in esecuzione nel cloud (istanza di compose.io tramite addon di Heroku). Ho il nome, la password, host, la porta e il nome del database dal MongoDB URI:Come connettersi a un server mongo remoto dal terminale Mac OS

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

Ho installato MongoDB sul mio MacBook utilizzando Homebrew non perché voglio Mongo in esecuzione sul mio Mac, ma solo per ottenere l'accesso al programma shell mongo per connettersi a questo database remoto.

Tuttavia, non riesco a trovare il comando giusto per ottenere l'accesso completo alla shell che desidero. Usando le istruzioni trovate qui http://docs.mongodb.org/manual/reference/program/mongo/ (cerca "remoto") Sono in grado di ottenere quello che sembra una connessione, ma senza dare il mio nome utente o password non sono completamente connesso. L'esecuzione di db.auth(username, password) restituisce 1 (a differenza di "auth fail" quando fornisco nome utente e password errati), ma continuo a ricevere un messaggio di errore "non autorizzato" durante l'emissione del comando show dbs.

risposta

123

Probabilmente stai collegando bene ma non disponi di privilegi sufficienti per eseguire show dbs.

Non è necessario eseguire il db.auth se si passa l'autenticazione nella riga di comando:

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

Una volta che ci si connette sei in grado di vedere le collezioni?

> show collections 

Se è così tutto va bene e basta non avere privilegi di amministratore per il database e non può eseguire il show dbs

+0

Sono in grado di connettermi usando la tecnica che descrivi. Tuttavia, non posso eseguire alcun comando, come "mostra collezioni" o "mostra utenti". Mi piace ottenere un errore "non autorizzato per la query su my_db.system.namespaces". – jononomo

+1

Ok, quindi heroku ha casualmente chiamato il mio database mongo un nome diverso da quello che ho usato in dev. Penso che fosse fondamentalmente il mio problema. – jononomo

+0

Ma se ho? AuthSource = admin alla fine. Non funziona. --authenticationDatabase non aiuta. – RomKazanova

30

Con Mongo 3.2 and higher basta usare la stringa di connessione come è:

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

Nota che hai bisogno di mongo shell v3.2 o successiva per far funzionare tutto questo. Vedi https://jira.mongodb.org/browse/SERVER-6233 –