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