web-dev-qa-db-fra.com

MongoDB - utilisateur admin non autorisé

J'essaie d'ajouter une autorisation à ma MongoDB.
Je fais tout cela sous Linux avec MongoDB 2.6.1.
Mon fichier mongod.conf est dans l'ancien format de compatibilité.
(c’est comme cela est venu avec l’installation).

1) J'ai créé un utilisateur administrateur comme décrit ici dans (3)

http://docs.mongodb.org/manual/tutorial/add-user-administrator/

2) J'ai ensuite édité mongod.conf en décommentant cette ligne

auth = true

3) Enfin, j'ai redémarré le service Mongod et j'ai essayé de me connecter avec:

/usr/bin/mongo localhost:27017/admin -u sa -p pwd

4) Je peux me connecter mais il dit ceci lors de la connexion.

MongoDB Shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB Shell!
The current date/time is: Thu May 29 2014 17:47:16 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }

5) Maintenant, il semble que cet utilisateur sa que j'ai créé ne dispose d'aucune autorisation.

root@test02:~# mc
MongoDB Shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB Shell!
The current date/time is: Thu May 29 2014 17:57:03 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
[admin] 2014-05-29 17:57:03.011 >>> use admin
switched to db admin
[admin] 2014-05-29 17:57:07.889 >>> show collections
2014-05-29T17:57:10.377-0400 error: {
        "$err" : "not authorized for query on admin.system.namespaces",
        "code" : 13
} at src/mongo/Shell/query.js:131
[admin] 2014-05-29 17:57:10.378 >>> use test
switched to db test
[test] 2014-05-29 17:57:13.466 >>> show collections
2014-05-29T17:57:15.930-0400 error: {
        "$err" : "not authorized for query on test.system.namespaces",
        "code" : 13
} at src/mongo/Shell/query.js:131
[test] 2014-05-29 17:57:15.931 >>>

Quel est le problème? J'ai répété toute cette procédure 3 fois et
Je pense avoir tout fait comme spécifié dans la documentation de MongoDB. Mais ça ne marche pas.
Je m'attendais à ce que cet utilisateur sa soit autorisé à faire n'importe quoi pour que
Il peut ensuite créer d’autres utilisateurs et leur accorder des autorisations plus spécifiques.

159
peter.petrov

Je me demandais aussi comment résoudre le même problème et tout a fonctionné une fois que j'ai défini le rôle en tant que root lors de l'ajout du premier utilisateur administrateur.

use admin
db.createUser(
  {
    user: 'admin',
    pwd: 'password',
    roles: [ { role: 'root', db: 'admin' } ]
  }
);
exit;

Si vous avez déjà créé l'utilisateur admin, vous pouvez modifier le rôle comme suit:

use admin;
db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])

Pour une référence complète sur les paramètres d'authentification, reportez-vous à la étapes J'ai compilé après des heures de recherche sur Internet.

367
s-hunter

C'est un peu déroutant - je pense que vous devrez vous accorder vous-même readWrite pour interroger une base de données. Un utilisateur avec dbadmin ou useradmin peut administrer la base de données (y compris en vous accordant des droits supplémentaires) mais ne peut pas effectuer de requêtes ni écrire de données.

alors accordez-vous readWrite et ça devrait aller -

http://docs.mongodb.org/manual/reference/built-in-roles/#readWrite

32
John Petrone

Peut-être qu'un exemple rapide sur la façon de changer un utilisateur actuel sera utile à quelqu'un. C'est ce que je cherchais réellement.

Suivant les conseils de @JohnPetrone, j’ai ajouté le rôle readWrite à mon utilisateur administrateur avec grantRolesToUser

> use admin
> db.grantRolesToUser("admin",["readWrite"])
> show collections
system.users
system.version
30
Bart C

Vous pouvez essayer: L’aide de l’indicateur --authenticationDatabase vous aide.

mongo --port 27017 -u "admin" -p "password" --authenticationDatabase "admin"
22
jremi

Je sais que cette réponse arrive très tard dans ce sujet, mais j'espère que vous y jetterez un coup d'oeil.

La raison pour laquelle vous obtenez cette erreur est basée sur le rôle spécifique que vous avez attribué à l'utilisateur, que vous avez déjà collecté, et oui, le fait de lui attribuer le rôle root résoudra votre problème, mais vous devez d'abord comprendre en quoi ces rôles faire exactement avant de les accorder aux utilisateurs.

Dans le didacticiel, vous avez attribué à l'utilisateur le rôle userAdminAnyDatabase, qui permet à l'utilisateur de gérer les utilisateurs de toutes vos bases de données. Ce que vous tentiez de faire avec votre utilisateur était en dehors de la définition de son rôle.

Le rôle root inclut ce rôle dans la définition, ainsi que readWriteAnyDatabase, dbAdminAnyDatabase et d'autres rôles qui en font un superutilisateur (essentiellement parce que vous pouvez tout faire avec.).

Vous pouvez consulter les définitions de rôle pour voir quels rôles vous devrez donner aux utilisateurs pour qu'ils effectuent certaines tâches. https://docs.mongodb.com/manual/reference/built-in-roles/ Ce n'est pas conseillé de rendre tous vos utilisateurs superbes :)

7
el Punch

J'ai eu un problème similaire ici sous un environnement Windows: j'ai installé Bitnami DreamFactory et il installe également un autre MongoDb qui est démarré au démarrage du système. J'exécutais mon MongoDbService (qui a été démarré sans erreur) mais j'ai remarqué qu'après avoir perdu beaucoup de temps, je me connectais en fait sur le service MongoDb de Bitnami. S'il vous plaît, jetez un oeil s'il n'y a pas une autre instance de mongoDB en cours d'exécution sur votre serveur.

Bonne chance!

0
ibirite

utiliser mydb
db.createUser ({utilisateur: "test", pwd: "secret", rôles: ["readWrite", "dbAdmin"], passwordDigestor: "serveur"})

0
user1797498

C'est une question simple.

  1. Il est important de changer de base de données cible NOT admin.

utilisez votre BD

  1. vérifiez votre authentification de base de données par

montrer aux utilisateurs

  1. Si vous obtenez un {} objet vide, c'est la question. Vous avez juste besoin de taper

db.createUser ({utilisateur: "votreutilisateur", pwd: "mot de passe", rôles: ["readWrite", "dbAdmin"]})

ou

db.grantRolesToUser ('votre_utilisateur', [{rôle: "dbAdmin", db: "votreDB"}])

0
cocoTW

De plus, notez que si votre client Shell mongo ne parvient pas à se connecter correctement à l'instance mongod, vous pouvez recevoir de telles erreurs "Permission Denied".

Assurez-vous que votre client ouvre une connexion en vérifiant le port de connexion, mais également que le port que vous utilisez dans mongod n'est pas utilisé. Vous pouvez définir un autre port à l'aide du paramètre --port <port> dans le shell et le processus.

0
Nick Louloudakis

J'ai eu ce problème à cause du nom d'hôte dans mon compas MongoDB pointant sur admin à la place de mon projet. Fixé en ajoutant le/nom du projet après le nom de l'hôte :) Essayez ceci:

  1. Choisissez votre projet dans le site Web de l'atlas MongoDB
  2. Connecter/Connecter avec MongoDB Compass
  3. Télécharger Compass/Choisissez votre système d'exploitation
  4. J'ai utilisé Compass 1.12 ou version ultérieure
  5. Copiez la chaîne de connexion sous Compass 1.12 ou version ultérieure.
  6. Ouvrir MongoDB Compass/Connect (en haut à gauche)/Connect To
  7. Chaîne de connexion détectée/Oui /
  8. Ajoutez le nom de votre projet après le nom d’hôte: cluster9-foodie.mongodb.net/projectname
  9. Connecter et tester l'API avec POSTMAN.
  10. Réussir.

Utilisez également la même chaîne de connexion dans votre code:

  1. Avant:
    • mongodb + srv: // nom du projet: mot de passe @ cluster9-foodie.mongodb.net/ admin
  2. Après:
    • mongodb + srv: // nom du projet: mot de passe @ cluster9-foodie.mongodb.net/ nom du projet

Bonne chance.

0
Mr. Dang

Acceptez de vous authentifier auprès de la base de données d'administration et de disposer d'au moins un rôle doté des privilèges appropriés, ce qui éviterait les "exceptions d'hôte local" de la base de données (ceci est réservé aux sites hébergés sur mongoDB), même si tout est toujours en place obtenir des exceptions non autorisées sur presque toutes les commandes, tout en accédant à mongoDB créé à l'aide de Mongo Atlas , voici l'endroit où vous pouvez en connaître la raison, pourquoi :

https://dba.stackexchange.com/questions/219003/not-authorized-on-admin-to-execute-command-mongodb-atlas-m0-free-tree-cluster?newreg=471a9a26108243d78a4a74a87a7a7a7a4a

et vérifiez aussi si vous avez hébergé mongoDB sur mongo Atlas :

https://docs.atlas.mongodb.com/unsupported-commands/

0
srinivasy

J'ai eu le même problème et dans mon cas, il était causé par la variable mongodb_security_authorization qui avait pour valeur "enabled". En gros, j'ai corrigé ce problème en le modifiant:

mongodb_security_authorization: "enabled"

pour que:

mongodb_security_authorization: "disabled"