2015-06-26 5 views
3

Я строй R сценария в, в котором мне нужно подключиться к MongoDB посредством аутентификации и обрабатывать данные, получаемые из базы данных, используя rmongodb package.For, что я создал новый пользователь MongoDB в версии версии 3.0.4 и при подключении к mongoDB от Ошибка сценария R. Также пользователь успешно прошел аутентификацию через оболочку mongo. Также аутентификация работает отлично, пока я аутентифицирую пользователя, созданного в MongoDB версии 2.x.rmongodb для MongoDB 3

Ниже приведен фрагмент кода, который мы использовали в скрипте R для подключения к базе данных Mongo.

mongo <- mongo.create("127.0.0.1", "", "user", "pass", "db", 0L)

При выполнении выше фрагменте кода мы получаем следующий ответ

error: Loading required package: rmongodb Authentication failed.

Пожалуйста, предложите мне подходящее решение для проверки подлинности вопрос отказа в пакете rmongodb.

+0

Покажите нам код и сообщения об ошибках, которые вы используете для подключения к MongoDB (если не хотите, не забудьте пароль). – Spacedman

+0

@Spacedman Я включил фрагмент кода и сообщение об ошибке в самом вопросе –

ответ

4

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

В Github есть проблема rmongodb, отслеживающая это: Compatibility with version 3.0 of MongoDB.

До rmongodb обновляется ваши варианты (в порядке как минимум для большинства hasslesome) включают в себя:

  • использовать другой драйвер, который пользуется поддержкой 3.x MongoDB (т.е. RMongo 0.1.0 or newer)

  • использование MongoDB 2.6

  • использование MongoDB 3.x, но переход на более раннее разрешение MONGO-CR (и не использовать WiredTiger или любые альтернативные двигатели хранения)

+0

NB: Это не похоже, что RMongo 0.1.0 приземлился на CRAN, так что вам, возможно, придется собрать пакет из главной ветки на github. – Stennie

+0

Я настроил MongoDB 3 для поддержки аутентификации MONGODB-CR, и в результате этого пользователь успешно прошел аутентификацию, а также R-скрипт может получить доступ к коллекциям с механизмом хранения wiredTiger –

+1

@RubinPorwal Замечательно, что вы добились успеха!Помимо аутентификации, основной проблемой с использованием более старого драйвера с MongoDB 3.0 является невозможность перечисления коллекций или индексов, если на вашем сервере используются нестандартные системы хранения данных, такие как WiredTiger. Появились новые ['listCollections'] (http://docs.mongodb.org/manual/reference/command/listCollections/) и [' listIndexes'] (http://docs.mongodb.org/manual/reference/command/listIndexes /), которые необходимо реализовать драйверам. – Stennie

3

Только что это произошло, я думал, что добавлю свои два цента на случай, если это поможет кому-то.

@Stennie находится прямо на цель с использованием материалов аутентификации. Так что, если вы хотите использовать mongo 3, способ получить это будет следующим образом (это из установки ubuntu).

1) sudo nano /etc/mongod.conf 2) Comment out the "auth=TRUE" line 3) sudo service mongod restart 4) login to mongo shell (now with no authentication so everything is open) 5) use admin 6) Execute the following: var schema = db.system.version.findOne({"_id" : "authSchema"}) schema.currentVersion = 3 db.system.version.save(schema) (the above 3 commands are from here: https://jira.mongodb.org/browse/SERVER-17459) 7) create your users in the appropriate database 8) to make sure the right credentials are set up, type db.system.users.find() and amke sure they have the MONGODB-CR credentials 9) quit mongo 10) ucomment out the authentication line in /etc/mongod.conf 11) restart mongodb using sudo service mongod restart

должны работать сейчас! Я надеюсь, что это поможет кому-то ...

Смежные вопросы