MongoDB → Не удается подключиться

Проблема: При подключении к MongoDB возникают ошибки:

Auth failed
Unable to authorize 
Cannot/unable connect to MongoDB

mongo

Например вы используете приложенияRobomongoMongoVUE или аналогичные, и при попытке подключения к MongoDB с использованием авторизации (через логин пароль) получаете ошибку.

Решение:

1. Прежде всего убедитесь что в конфиге mongod.conf включена авторизация и удаленный доступ:

bind_ip = 127.0.0.1,<внешний_ip_сервера>
auth = true

В bind_ip должен быть задан внешний IP сервера, либо 0.0.0.0. Не забудьте после внесения изменений выполнить ~# service mongod restart.
Проверяем:

~# mongo
> use admin;
> db.auth("admin","password");
1
> show dbs;

 

2. Убедитесь что пользователь создан для нужной базы и имеет все необходимы права.

use your_database;
show users;

Создать суперпользователя можно так:

use admin;
db.createUser({     
    user: "root",    
    pwd: "*****",    
    roles: [ { role: "root", db: "admin" } ]  
});

Создать пользователя на чтение/запись для конкретной базы:

user database_name;
db.createUser({
      user: "user",
      pwd: "****",
      roles: [ { role: "readWrite", db: "database_name" } ]
});

Внести изменения в права, можно так:

db.updateUser( "userName", {
    roles : [
        { role : "dbAdmin", db : "dbName"  },
        { role : "readWrite", db : "dbName"  }
        ]
});

 

3. Проверяем удается ли авторизироваться и подключиться к базе с консоли. При этом не забывайте что проверка прав осуществляется на уровне базы данных, поэтому убедитесь что подключаетесь к базе данных которая содержит информацию о правах пользователя:

~# mongo -u admin -p password --authenticationDatabase admin
// или
~# mongo localhost:27017/admin -u admin -p password
4. Если все настроено верно, авторизация с консоли происходит, но авторизироваться удаленно не удается — значит причиной является смена механизма аутентификации в новой версии MongoDB 3.0. Старый механизм аутентификации MONGODB-CR начиная с версии MongoDB 3.0 заменен на новый SCRAM-SHA-1. Проверяем:
use your_database;
db.system.users.find();

Если результат содержит SCRAM-SHA-1, значит MongoDB использует новый механизм аутентификации и наш клиент (библиотека), могут его не поддерживать.

Решение:

Вы должны обновить все драйверы, используемые приложениями, которые будут подключаться к модернизированным экземплярам баз данных с поддержкой SCRAM-SHA-1. Минимальные версии драйверов, которые поддерживают SCRAM-SHA-1перечислены в официальной документации: http://docs.mongodb.org/manual/release-notes/3.0-scram/#upgrade-drivers

Либо дождаться поддержки SCRAM-SHA-1в приложениях которые вы используете для подключения к MongoDB ( Robomongo,MongoVUE и т.д.).

UPD. Из платных GUI клиентов неплохо работает NoSQL Manager for MongoDB, начиная с версии 2.2  Support of SCRAM-SHA-1 authentication mechanism that MongoDB v3.0 uses by default added.