web-dev-qa-db-fra.com

MongoDB non autorisé pour la requête - code 13

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é.

21
Guy

Vous devez attribuer le rôle read à l'utilisateur en question.

Le dbAdmin role not ne comprend pas l'accès en lecture sur les collections non-système.

20
Sebastian

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

21
ticofab

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" }
    ]
)
9
Flaudre

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.

4
Dean

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
0
IKo