mongotemplate example data conectar con mongodb spring-data-mongodb

example - La autenticación de MongoDB-CR falló



spring mongodb repository (12)

Recibo el siguiente error al autenticar al usuario: adquirir_usuario @ la compra falló. La autenticación MongoDB-CR falló. Faltan credenciales en el documento del usuario cuando accedo al servicio web a través del navegador.

Pero puedo autenticar el usuario de compra de mongo, devuelve 1.


Actualice mongo-java-driver a 3.0.3 y use: -

MongoCredential.createScramSha1Credential en lugar de MongoCredential.createMongoCRCredential

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

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


Agregando a la solución anterior por Vivek y explicación tomada de aquí

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

  • solo necesita degradar el esquema para crear usuarios de MONGODB-CR. Una vez que estén allí, los controladores antiguos funcionarán independientemente del valor de authSchemaVersion. Sin embargo, si ejecuta authSchemaUpgrade para cambiar de "3" a "5", los usuarios obviamente se actualizarán.
  • Mi comentario con respecto a los nuevos usuarios fue que si tiene usuarios existentes de SCRAM y cambia el esquema manualmente a "3", los documentos de usuario no serán consistentes con el nuevo esquema. Sin embargo, esto no se aplica, pero los usuarios de SCRAM seguirán trabajando para cualquier controlador compatible con SCRAM.

Creo que esta es la respuesta que necesitas:

1) Inicie 3.0 sin autenticación habilitada. (La autenticación debe deshabilitarse; de ​​lo contrario, obtendrá el error no autorizado).

2) Ejecutar (después de seleccionar "admin" use db):

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

schema.currentVersion = 3

db.system.version.save (esquema)

3) reinicie mongodb con la autenticación habilitada.

4) Cree un nuevo usuario administrador (el anterior, el que creó antes de que esta solución no funcione).

Las cosas deberían funcionar ahora. Este problema también me estaba volviendo loco.

La respuesta vino desde aquí: https://jira.mongodb.org/browse/SERVER-17459


El paso número 2. anterior no se detalla explícitamente, encontré esta solución y funcionó para mí.

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


Junio ​​de 2018 Recibí este error después de intentar conectarme a mi versión 3.6 de Mongodb desde un antiguo cliente instalado en / usr / bin. Instalé el mongo DB en una carpeta separada fuera del directorio estándar del sistema operativo, por lo que mi instalación estaba en conflicto con la versión antigua instalada por el administrador de paquetes.


Para mí estaba usando un cliente mongo 2 que intentaba conectarse a un servidor mongo 3. La actualización del cliente solucionó el problema.


Probablemente noticias viejas y problemas resueltos, pero agregando mi experiencia con el mismo error:

Tuve exactamente el mismo problema (usando MongoDB 3.0), y un controlador C # que estaba configurado para usar un pre 3.0 db.

En C # utilicé "MongoDB.Driver.CreateMongoCRCredentials ()", que causó el error que estaba recibiendo el OP.

La solución (para mí) fue cambiar el comando anterior a "MongoDB.Driver.CreateCredential ()".

Supongo que esto podría deberse al uso de usuarios "antiguos" (desde pre 3.0) en un sistema actualizado. Lo que lo obliga a actualizar a sus usuarios al nuevo mecanismo de autenticación o a degradar el mecanismo de autenticación en su servidor.


También recibí este error.

Verifique su archivo Spring Config. Tenía un argumento de constructor llamado "MONGODB-CR" que cambié a "SCRAM-SHA-1" y solucionó mi problema.

seguir el archivo de registro mongodb me ayudó a diagnosticar esto.


Tuve el mismo error con una aplicación Spring Boot que usa una nueva base de datos MongoDB 3.2.8. Al actualizar a la última versión del controlador Java Mongo (3.2.2) y luego agregar el parámetro de mecanismo de autenticación al URI en mi application.properties, pude hacerlo funcionar:

spring.data.mongodb.uri=mongodb://myusername:mypassword@localhost/?authSource=admin&authMechanism=SCRAM-SHA-1 spring.data.mongodb.database=test


Tuve el mismo problema. Lo que me estaba sucediendo era que cuando usaba MongoDB 3 para crear mi usuario, estaba usando SCRAM-SHA-1 como mecanismo de autenticación en lugar de MongoDB-CR. Lo que tuve que hacer fue:

  1. Elemento de la lista
  2. Eliminar el usuario creado.
  3. Modifique la colección admin.system.version de modo que la versión actual de authSchema sea 3 en lugar de 5 (3 está usando MongoDB-CR).
  4. Recrea a tu usuario.

Debería funcionar sin problemas ahora.


vaya a la consola mongoDB y elimine su usuario actual y configure la versión authSchema en 3 en lugar de 5, siga estos comandos en la consola 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 })

Ahora reinicie el mongod y cree un nuevo usuario, entonces debería funcionar bien.

Nota: use los comandos remove en test db solamente, si está en producción use update.

Información de autenticación para Kubernetes Helm Chart

Si elimina todos los usuarios y la autenticación está habilitada en la configuración (o --auth param que se establece de forma predeterminada en el gráfico de timón de Kubernetes), ya no es posible acceder a MongoDB. Es necesario deshabilitar la autenticación, crear un nuevo usuario y luego volver a habilitarla.

En Kubernetes, debe editar los parámetros y agregar --noauth como argumento, ya que no es el valor predeterminado allí como en un MongoDB instalado clásico. Consulte la documentación de la CLI para obtener más información sobre --noauth y la correspondiente --auth .


  • desinstalar paquetes mongodb-clients proporcionados por Ubuntu
  • instale mongodb-org-shell proporcionado por MongoDB oficial

Esto resolvió el problema, porque MongoDB no mantiene el paquete mongodb no oficial proporcionado por Ubuntu. Siempre debe usar los paquetes oficiales mongodb-org de MongoDB, que se mantienen actualizados con los lanzamientos de MongoDB principales y menores más recientes.