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 ())
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:
- Elemento de la lista
- Eliminar el usuario creado.
- 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).
- 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.