Rails Mongoid не удается выполнить проверку подлинности - с ошибкой 13: "не разрешено для запроса на my_db.my_collection"
Эта проблема, как говорили, была разрешена последней версией мопеда, но все же со мной происходит.
У меня есть приложение rails 4.2 с Mongoid, создано пользователь для базы данных MongoDB с readWrite и dbOwner ролей и установите auth = true в файле mong.conf.
Я могу выполнять любые действия в БД с этими учетными данными пользователя, используя оболочку Mongo или простое Java-приложение, используя их Mongo-драйвер.
Однако при попытке аутентификации с помощью Mongoid я всегда получить эту ошибку:
не удалось с ошибкой 13: "не разрешено для запроса на my_db.my_collection"
Вот соответствующая часть моего файла mongoid.yml:
production:
# Configure available database sessions. (required)
sessions:
# Defines the default session. (required)
default:
# Defines the name of the default database that Mongoid can connect to.
# (required).
database: my_db
hosts:
- localhost:27017
username: my_username
password: my_password
Я также попытался заменить хост удаленным адресом сервера и получить доступ к нему удаленно (который работает с опцией проверки подлинности отключен) без успеха.
Для чего это стоит, я могу видеть, что учетные данные, отлаживая файл mpped/ node.rb в методе обеспечить_связанный, я вижу, что переменная @credentials содержит мое имя пользователя и пароль
Что мне здесь не хватает?
Спасибо!
Ответы
Ответ 1
В эту проблему тоже входит. Я хотел бы предположить, что вы используете MongoDB 3 +?
Плохая новость: Мопед 2 (используемый сегодня mongoid) не поддерживает аутентификацию для MongoDB 3+.
Мопед также отстает от множества важных функций для поддержки сервера версии 3.0. Например, он просто не поддерживает аутентификацию с помощью MongoDB 3.0 или последних версий проводного протокола (который включает такие команды, как listCollections, listIndexes и возможность делать массовые записи). Интеграция Mongoid с драйвером Ruby 2.0 принесет много этой функциональности и передовой совместимости с ODM. Источник
Хорошая новость:
Сейчас идет основной пересмотр (Mongoid 5), который будет поддерживаться командой MongoDB. Вы можете вытащить из мастера сегодня и проверить его... но я бы не рекомендовал для производства еще, так как он очень неустойчив.
Варианты решения
- Удалить пользовательское/пароли auth из MongoDB и любого общедоступного DNS в базу данных. Используйте SSH с закрытым ключом и подключитесь к частному адресу.
- Переход на MongoDB 2.x
- Использование Mongoid 5