як я можу підключитися до віддаленого сервера mongo з терміналу Mac OS


101

Я хотів би занести в оболонку монго в терміналі мого MacBook. Однак мені цікаво підключитися до екземпляра Mongo, який працює у хмарі (екземпляр compose.io через адмінку Heroku). У мене є ім'я, пароль, хост, порт і ім'я бази даних з URI MongoDB:

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

Я встановив mongodb на своєму MacBook за допомогою Homebrew не тому, що я хочу, щоб Mongo працює на моєму Mac, а просто щоб отримати доступ до програми оболонки mongo для того, щоб підключитися до цієї віддаленої бази даних.

Однак я не можу знайти правильну команду, щоб отримати мені повний доступ до оболонки, який я хотів би. Використовуючи інструкції, знайдені тут http://docs.mongodb.org/manual/reference/program/mongo/ (пошук "віддаленого") Я можу отримати те, що схоже на з'єднання, але не вказуючи своє ім'я користувача або пароль, я не повністю пов'язані. Запуск db.auth(username, password)повертає 1 (на відміну від "auth fails", коли я надаю неправильне ім'я користувача та пароль), але я продовжую отримувати "несанкціоноване" повідомлення про помилку при видачі show dbsкоманди.

Відповіді:


170

Ви, ймовірно, добре підключаєтесь, але не маєте достатніх привілеїв для запуску show dbs.

Вам не потрібно запускати db.auth, якщо ви передаєте auth у командному рядку:

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

Після підключення ви зможете побачити колекції?

> show collections

Якщо так, все добре, і ви просто не маєте права адміністратора на базу даних і не можете запустити show dbs


Я в змозі підключитися, використовуючи описану вами техніку. Однак я не можу запускати жодних команд, таких як "показати колекції" або "показати користувачам". Я хочу отримати помилку "не авторизований для запиту на my_db.system.namespaces".
jononomo

1
Гаразд, так що хероньку випадково назвав мою базу даних монго, відмінною від тієї, яку я використовував у програмі dev. Я думаю, що це в основному моє питання.
jononomo

1
Але якщо я маю? AuthSource = адміністратор врешті-решт. Це не працює. --authenticationDatabase не допомагає.
Роман Казановський

27017 - це порт за замовчуванням. на випадок, якщо прикладний порт не працює. docs.mongodb.com/manual/reference/default-mongodb-port
змінити

51

З Монго 3.2 і вище просто використовуйте рядок з'єднання таким чином:

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

0

Ще один спосіб зробити це:

mongo mongodb://mongoDbIPorDomain:port
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.