mongodb - sessions - not authorized on to execute command
MongoDB no está autorizado para consulta-código 13 (6)
En MongoDB 2.6.1 he configurado un usuario con derechos dbAdmin:
{
"_id" : "mydbname.myusername",
"user" : "myusername",
"db" : "mydbname",
"credentials" : {
"MONGODB-CR" : "<some credentials>"
},
"roles" : [
{
"role" : "dbAdmin",
"db" : "mydbname"
}
]
}
Cuando uso el shell mongo para conectarme a la base de datos (usando -u y -p en la línea de comandos) y ejecuto una consulta como esta:
db.mycollectionname.find()
Me sale este error:
error: { "$err" : "not authorized for query on mydbname.request", "code" : 13 }
¿Alguna idea de lo que puede estar pasando?
Hasta ahora he intentado agregar todos los roles que puedo encontrar al usuario, pero eso no ha ayudado.
Además de la respuesta de @ Sebastian, eso significa explícitamente:
Otorgar un rol
Otorgue un rol usando el método db.grantRolesToUser (). Por ejemplo, la siguiente operación otorga al usuario de reportsUser el rol de lectura en la base de datos de cuentas:
db.grantRolesToUser(
"your_user",
[
{ role: "read", db: "your_db" }
]
)
En mi caso ayudó a agregar ?authSource=admin
a uri.
Así que el uri se veía así:
spring.data.mongodb.uri=mongodb://user:password@host:port/database?authSource=admin
Estaba teniendo el mismo problema hasta que me di cuenta de que cometí un error. Estaba heredando un cliente mongo que señalaba una base de datos diferente de una clase Perl primaria sin darme cuenta. Tal vez algo que pueda comprobar.
Estoy publicando esto porque tuve problemas para encontrar esta solución en línea. El problema es vergonzoso, pero el mensaje de error y el escenario hacen que sea un poco difícil de entender, así que espero salvar a alguien. Mi aplicación pudo establecer una conexión de base de datos, iniciar y servir páginas estáticas, pero cada vez que intentaba ejecutar una consulta obtenía este error.
MongoError: not authorized on mydb to execute command { count: "urls", query: {} }
Este error fue causado por un ID de usuario y una contraseña con el separador incorrecto
mongodb://myuserid/[email protected]:12345/mydb [wrong]
mongodb://myuserid:[email protected]:12345/mydb [right]
Si bien la aplicación de nodo pudo conectarse con éxito a MongoDB, el URI con formato incorrecto hizo que el controlador omitiera la autenticación antes de emitir los comandos de la base de datos.
Gracias y una sugerencia de sombrero a la gente en mLab support.
Para cualquiera que se encuentre con este problema contra Mongo 3.0.6, lo solucioné agregando
?authMode=scram-sha1
al final de mi mongodb uri.
Aquí hay algunos documentos que explican el propósito de scram-sha1