Dans MongoDB 2.6.1, j'ai configuré un utilisateur avec les droits dbAdmin:
{
"_id" : "mydbname.myusername",
"user" : "myusername",
"db" : "mydbname",
"credentials" : {
"MONGODB-CR" : "<some credentials>"
},
"roles" : [
{
"role" : "dbAdmin",
"db" : "mydbname"
}
]
}
Lorsque j'utilise le shell mongo pour me connecter à la base de données (en utilisant -u et -p sur la ligne de commande), une requête comme celle-ci est exécutée:
db.mycollectionname.find()
Je reçois cette erreur:
error: { "$err" : "not authorized for query on mydbname.request", "code" : 13 }
Des idées que peut-il se passer?
Jusqu'à présent, j'ai essayé d'ajouter tous les rôles que je peux trouver à l'utilisateur, mais cela ne m'a pas aidé.
Pour tous ceux qui rencontrent ce problème contre Mongo 3.0.6, j’ai corrigé en ajoutant
?authMode=scram-sha1
à la fin de mon mongodb uri.
Voici quelques documents expliquant le but de scram-sha1
En plus de la réponse de @ Sebastian, cela signifie explicitement:
Attribuer un rôle
Attribuez un rôle à l'aide de la méthode db.grantRolesToUser (). Par exemple, le L'opération suivante accorde à l'utilisateur reportsU le rôle de lecture sur le fichier base de données des comptes:
db.grantRolesToUser(
"your_user",
[
{ role: "read", db: "your_db" }
]
)
Je publie ce message parce que j’ai eu du mal à trouver cette solution en ligne. Le problème est embarrassant, mais le message d'erreur et le scénario compliquent la tâche, et j'espère pouvoir épargner un malheur à quelqu'un… .. Mon application a pu établir une connexion à une base de données, démarrer et essayé d'exécuter une requête j'ai eu cette erreur.
MongoError: not authorized on mydb to execute command { count: "urls", query: {} }
Cette erreur a été provoquée par un ID utilisateur et un mot de passe avec le mauvais séparateur
mongodb://myuserid/[email protected]:12345/mydb [wrong]
mongodb://myuserid:[email protected]:12345/mydb [right]
Alors que l'application de nœud a réussi à se connecter à MongoDB, l'URI formaté de manière incorrecte a obligé le pilote à ignorer l'authentification avant d'émettre des commandes de base de données.
Merci et un coup de chapeau aux gens du support de mLab.
Dans mon cas, j'ai aidé à ajouter ?authSource=admin
à uri.
Donc, l'uri ressemblait à ceci:
spring.data.mongodb.uri=mongodb://user:password@Host:port/database?authSource=admin