У меня есть проблема с использованием play-reactivemongo для подключения к MongoDB 3 и столкнулась с проблемой «', не разрешенной для запроса на XXX (код = 13)». Программа работала отлично, когда MongoDB был запущен без --auth.Ошибка аутентификации Play-ReactiveMongo с MongoDB 3
Версия базы данных должна быть 3.0.4, как показано в журнале.
2015-10-24T15:58:09.868+0800 I CONTROL [initandlisten] db version v3.0.4
Я использовал версию 0.11.7 play2-reactivemongo плагин.
libraryDependencies ++= Seq(
"org.reactivemongo" %% "play2-reactivemongo" % "0.11.7.play24",
Я указал authMode в mongodb.uri, как это.
mongodb.uri = "mongodb://postsUser:[email protected]:27017/posts?authMode=?authMode=scram-sha1&authSource=posts&rm.tcpNoDelay=true"
Я нашел следующую ошибку в файле mongodb.log.
2015-10-24T16:41:24.977+0800 I ACCESS [conn105] Failed to authenticate [email protected] with mechanism MONGODB-CR: AuthenticationFailed MONGODB-CR credentials missing in the user document
Почему MONGODB-CR используется вместо SCRAM-SHA-1? Предположим, что SCRAM-SHA-1 должен быть по умолчанию, верно?
Хорошо, обновление до MongoDB 3.0.7 решена часть проблемы. Будет «не авторизованная» ошибка, и последующий доступ будет прекрасен. В mongodb.log видно, что соединение не удалось, а затем стало хорошо. "2015-10-25T01: 08: 52.286 + 0800 I QUERY [conn23] утверждение 13 не разрешено для запроса на posts.posts ns: posts.posts query: {} 2015-10-25T01: 08: 52.292 + 0800 I ACCESS [conn23] Успешно заверен как основной столбец в сообщениях « –
Я думаю, что сделал опечатку в mongodb.uri (authMode =? authMode = scram-sha1) и заставляя БД проходить проверку подлинности с помощью mongodb-cr. К сожалению, я не смог повторить попытку с 3.0.4, так как обновил до 3.0.7 –