Проблема: При подключении к MongoDB возникают ошибки:
Auth failed Unable to authorize Cannot/unable connect to MongoDB
Например вы используете приложенияRobomongo
, MongoVUE
или аналогичные, и при попытке подключения к 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
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
.