J'essaie d'ajouter une autorisation à mon 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 ainsi qu'il 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 cela est dit 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) Il semble maintenant que cet sa
utilisateur 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 que j'ai tout fait comme spécifié dans les documents MongoDB. Mais ça ne marche pas.
Je m'attendais à ce que cet sa
utilisateur soit autorisé à faire quoi que ce soit afin
qu'il puisse ensuite créer d'autres utilisateurs et leur donner des autorisations plus spécifiques.
Réponses:
Je me grattais également la tête autour du même problème, et tout a fonctionné après avoir défini le rôle comme root lors de l'ajout du premier utilisateur administrateur.
Si vous avez déjà créé l'
admin
utilisateur, vous pouvez changer le rôle comme ceci:Pour une référence complète des paramètres d'authentification, consultez les étapes que j'ai compilées après des heures de recherche sur Internet.
la source
userAdminAnyDatabase
placeroot
?db.grantRolesToUser('admin',[{ role: "root", db: "admin" }])
db.grantRolesToUser('admin',[{ role: "root", db: "admin" }])
, et cela me rend confus. Je ne suis pas autorisé à exécuter une commande, et pourtant je peux exécuter une commande pour me rendre root, puis exécuter cette commande. Très étrange: Sdb.grantRolesToUser('admin',[{ role: "root", db: "admin" }])
n'ont pas fonctionné, assurez-vous de revenir àuse admin
... eu le même problème, une fois que je suis revenu, cela a fonctionné comme un charmeC'est un peu déroutant - je pense que vous devrez vous accorder 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
la source
Peut-être qu'un exemple rapide de la façon de changer un utilisateur actuel sera utile à quelqu'un. C'est ce que je cherchais.
En suivant les conseils de @JohnPetrone, j'ai ajouté le rôle readWrite à mon utilisateur administrateur avec grantRolesToUser
la source
Vous pouvez essayer: l'aide de l'indicateur --authenticationDatabase aide.
la source
Je sais que cette réponse arrive très tard dans ce fil, mais j'espère que vous la vérifierez.
La raison pour laquelle vous obtenez cette erreur est basée sur le rôle spécifique que vous avez accordé à l'utilisateur, que vous avez rassemblé maintenant, et oui, donner à cet utilisateur le rôle
root
résoudra votre problème, mais vous devez d'abord comprendre ce que ces rôles font exactement avant de les accorder. aux utilisateurs.Dans le didacticiel, vous avez accordé à l'utilisateur le
userAdminAnyDatabase
rôle qui lui donne essentiellement la possibilité de gérer les utilisateurs de toutes vos bases de données. Ce que vous essayez de faire avec votre utilisateur ne correspond pas à sa définition de rôle.Le
root
rôle a ce rôle inclus dans la définition elle ainsi que lareadWriteAnyDatabase
,dbAdminAnyDatabase
et d' autres rôles qui en fait un super - utilisateur (essentiellement parce que vous pouvez faire quelque chose avec elle).Vous pouvez consulter les définitions de rôle pour voir quels rôles vous devrez attribuer aux utilisateurs pour effectuer certaines tâches. https://docs.mongodb.com/manual/reference/built-in-roles/ Ce n'est pas conseillé de faire de tous vos utilisateurs de superbes :)
la source
show collections
), vous devez lui donner cette capacité et rien d'autreroles: [ { role: "read", db: "admin" } ]
. Notez que le rôle ici est lu, ceci est spécifique à la base de données et vous ne pouvez rien faire d'autre que cela. Consultez ce lien pour d'autres rôles docs.mongodb.com/manual/reference/built-in-rolesC'est une question simple.
ou
la source
J'ai eu un problème similaire ici sur 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é après avoir perdu beaucoup de temps que je me connectais en fait sur le service MongoDb de Bitnami. Veuillez vérifier s'il n'y a pas d'autre instance de mongoDB en cours d'exécution sur votre serveur.
Bonne chance!
la source
En outre, notez que si votre client shell mongo ne parvient pas à se connecter correctement à l'
mongod
instance, vous pouvez recevoir de telles erreurs «Autorisation refusée».Assurez-vous que votre client ouvre une connexion en vérifiant le port de connexion, mais également que le port que vous utilisez
mongod
n'est pas utilisé. Vous pouvez définir un port différent en utilisant le--port <port>
paramètre à la fois dans le shell et dans le processus.la source
J'ai eu ce problème à cause du nom d'hôte dans mon MongoDB Compass qui pointait vers admin à la place pour mon projet. Corrigé en ajoutant le / projectname après le hostname :) Essayez ceci:
Utilisez également la même chaîne de connexion dans votre code:
Bonne chance.
la source
la source
Il est convenu que vous devez vous authentifier auprès de l'administrateur de la base de données et avoir besoin d'au moins un rôle avec des privilèges corrects qui éviterait une `` exception d'hôte local '' de la base de données (c'est pour mongoDB hébergé sur site), bien que vous ayez tout en place et toujours obtenir des exceptions non autorisées sur presque toutes les commandes, tout en accédant à mongoDB qui a été créé à l'aide de Mongo Atlas , alors voici l'endroit où vous pourriez en connaître la raison, pourquoi:
/dba/219003/not-authorized-on-admin-to-execute-command-mongodb-atlas-m0-free-tier-cluster?newreg=471a9a26108243d78d4ca74a87e7a115
et vérifiez également si vous avez hébergé mongoDB sur mongo Atlas :
https://docs.atlas.mongodb.com/unsupported-commands/
la source
la source
J'ai suivi ces étapes sur Centos 7 pour MongoDB 4.2. (Utilisateur distant)
Mettre à jour le fichier mongod.conf
Démarrez le démon du service MongoDB
Ouvrir le shell MongoDB
Exécutez cette commande sur le shell
L'utilisateur root distant a été créé. Vous pouvez maintenant tester cette connexion à la base de données en utilisant n'importe quel outil GUI MongoDB à partir de votre machine de développement. Comme Robo 3T
la source
Cela peut être dû au fait que vous n'avez pas défini noAuth = true dans mongodb.conf
Après avoir défini ce redémarrage, le service à l'aide
service mongod restart
la source