Подтвердить что ты не робот

Ошибка аутентификации MongoDB-CR

Я получаю следующую ошибку при аутентификации пользователя: покупка_user @не удалось. Ошибка аутентификации MongoDB-CR. Отсутствие учетных данных в пользовательском документе при доступе к веб-сервису через браузер.

Но я могу аутентифицировать purchase_user из mongo, он возвращает 1.

4b9b3361

Ответ 1

перейдите в консоль mongoDB и удалите текущего пользователя и установите версию authSchema 3 вместо 5, следуйте этим командам в консоли mongo -

mongo
use admin
db.system.users.remove({})    <== removing all users
db.system.version.remove({}) <== removing current version 
db.system.version.insert({ "_id" : "authSchema", "currentVersion" : 3 })

Теперь перезапустите mongod и создайте нового пользователя, тогда он должен работать нормально.

Примечание: используйте команды удаления только в тестовой базе данных, если в производственной программе используйте обновление.

Информация об аутентификации для Kubernetes Helm Chart

Если вы удаляете всех пользователей и аутентификация включена в конфигурации (или параметре --auth который установлен по умолчанию в таблице управления Kubernetes), доступ к MongoDB больше не будет возможен. Требуется отключить аутентификацию, создать нового пользователя и затем снова включить его.

В Kubernetes вам нужно отредактировать параметры и добавить --noauth качестве аргумента, так как это не значение по умолчанию, как в классической установленной MongoDB. Пожалуйста, обратитесь к документации CLI для получения дополнительной информации о --noauth и соответствующем --auth.

Ответ 2

Была та же проблема. То, что происходило со мной, было то, что когда я использую MongoDB 3 для создания своего пользователя, он использовал SCRAM-SHA-1 в качестве механизма аутентификации вместо MongoDB-CR. Что мне нужно было сделать:

  • Элемент списка
  • Удалить созданного пользователя.
  • Измените коллекцию admin.system.version, чтобы authSchema currentVersion составляла 3 вместо 5 (3 использует MongoDB-CR).
  • Восстановите своего пользователя.

Теперь нужно работать без проблем.

Ответ 3

Вышеуказанный шаг №2 не детализирован явно, я нашел это решение и работал у меня.

var schema = db.system.version.findOne({"_id" : "authSchema"})
schema.currentVersion = 3
db.system.version.save(schema)

Ответ 4

Я думаю, что это тот ответ, который вам нужен:

1) Начать 3.0 без авторизации. (Auth необходимо отключить, иначе вы получите недопустимую ошибку).

2) Запустите (после выбора "admin" используйте db):

var schema = db.system.version.findOne({ "_ id": "authSchema" })

schema.currentVersion = 3

db.system.version.save(схема)

3) перезапустите mongodb с включенным auth.

4) Создайте нового пользователя admin (старый, тот, который вы создали до этого обходного пути, не будет работать).

Теперь все должно работать. Эта проблема сводила меня с ума.

Ответ пришел отсюда: https://jira.mongodb.org/browse/SERVER-17459

Ответ 5

Добавление к приведенному выше решению Vivek и объяснение, сделанное здесь

use admin
db.system.users.remove({})    <== removing all users
db.system.version.remove({}) <== removing current version 
db.system.version.insert({ "_id" : "authSchema", "currentVersion" : 3 })
  • вам нужно только понизить схему для создания пользователей MONGODB-CR. Как только они там, старые драйверы будут работать независимо от значения authSchemaVersion. Однако если вы запустите authSchemaUpgrade, чтобы изменить от "3" до "5" пользователи, очевидно, будут обновлены.
  • Мой комментарий к новым пользователям состоял в том, что если у вас есть существующий SCRAM пользователей и изменить схему вручную на "3", пользовательские документы не будут быть в соответствии с новой схемой. Однако это не применяется, однако пользователи SCRAM будут по-прежнему работать для любого драйвера, поддерживающего SCRAM.

Ответ 6

Обновите mongo-java-драйвер до версии 3.0.3 и используйте: -

MongoCredential.createScramSha1Credential вместо MongoCredential.createMongoCRCredential

MongoCredential createMongoCRCredential = MongoCredential.createScramSha1Credential (mongoConfiguration.getDatabaseUserName(), mongoConfiguration.getAuthenticationDatabase(), mongoConfiguration.getDatabasePassword().CharArray());

http://docs.mongodb.org/master/release-notes/3.0-scram/

Ответ 7

Для меня я использовал клиента mongo 2, пытающегося подключиться к серверу mongo 3. Обновление клиента исправило проблему.

Ответ 8

  • удалить пакеты mongodb-clients, предоставляемые Ubuntu
  • установить mongodb-org-shell, предоставленный официальным MongoDB

Это решило проблему, потому что неофициальный пакет mongodb, предоставляемый Ubuntu, не поддерживается MongoDB. Вы всегда должны использовать официальные пакеты MongoDB mongodb-org, которые обновляются с самыми последними основными и второстепенными выпусками MongoDB.

Ответ 9

Я тоже получал эту ошибку.

Проверьте файл конфигурации Spring. У меня был конструктор arg с именем "MONGODB-CR", который я поменял на "SCRAM-SHA-1", и он исправил мою проблему.

хвост файла журнала mongodb помог мне диагностировать это.

Ответ 10

Вероятно, старые новости и проблема решена, но добавление моего опыта с той же ошибкой:

У меня была та же самая проблема (с использованием MongoDB 3.0) и драйвер С#, который был настроен на использование pre 3.0 db.

В С# я использовал "MongoDB.Driver.CreateMongoCRCredentials()", который вызвал ошибку, которую получал OP.

Исправление (для меня) состояло в том, чтобы переключить команду выше на "MongoDB.Driver.CreateCredential()".

Я предполагаю, что это может быть вызвано использованием "старых" пользователей (от pre 3.0) в обновленной системе. Это либо заставляет вас обновлять пользователей до нового механизма аутентификации, либо понизить механизм проверки подлинности на вашем сервере.

Ответ 11

Июнь 2018 г. Я получил эту ошибку после попытки подключиться к моей версии Mongodb 3.6 с помощью старого клиента, установленного в /usr/bin. Я установил mongo DB в отдельную папку за пределами стандартного каталога ОС, поэтому моя установка противоречила старой версии, установленной менеджером пакетов.

Ответ 12

У меня была та же ошибка с приложением Spring Boot, использующим новую базу данных MongoDB 3.2.8. Обновив драйвер Java Mongo до последней версии (3.2.2), а затем добавив параметр механизма аутентификации в URI в моем application.properties, я смог заставить его работать:

spring.data.mongodb.uri=mongodb://myusername:[email protected]/?authSource=admin&authMechanism=SCRAM-SHA-1
spring.data.mongodb.database=test