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


101

Я хотел бы зайти в оболочку mongo в терминале на моем 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», когда я указываю неправильное имя пользователя и пароль), но я продолжаю получать сообщение об ошибке «unauthorized» при выполнении show dbsкоманды.

Ответы:


170

Вы, вероятно, подключаетесь нормально, но у вас недостаточно прав для запуска show dbs.

Вам не нужно запускать db.auth, если вы передаете аутентификацию в командной строке:

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

После подключения вы сможете видеть коллекции?

> show collections

Если это так, все в порядке, и у вас просто нет прав администратора для базы данных и вы не можете запустить show dbs


Я могу подключиться, используя описанную вами технику. Однако я не могу запускать какие-либо команды, такие как «показать коллекции» или «показать пользователей». Я очень хочу получить ошибку «не авторизован для запроса на my_db.system.namespaces».
jononomo

1
Итак, heroku произвольно назвал мою базу данных mongo другим именем, отличным от того, которое я использовал в dev. Я думаю, это была моя проблема.
jononomo

1
Но если в итоге у меня будет? AuthSource = admin. Не работает. --authenticationDatabase не помогает.
Роман Казановский

Хотя 27017 - порт по умолчанию. на всякий случай порт примера не работает. docs.mongodb.com/manual/reference/default-mongodb-port
изменение

52

В Mongo 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.