web-dev-qa-db-fra.com

Comment puis-je entrer Mongo en tant que superutilisateur ou réinitialiser les utilisateurs?

Je jouais avec des autorisations et je me suis verrouillé hors de la base de données Mongo. Je suis à peu près sûr d'avoir fait cela en essayant d'ajouter explicitement l'accès à une base de données, mais à la place, j'ai remplacé uniquement l'autorisation de la base de données. Je suis donc effectivement exclu de ma base de données Mongo et tout ce que je lis me dit comment créer un super utilisateur si j'ai le privilège d'ajouter un utilisateur. Pour le moment, je ne pense pas avoir d'utilisateurs disposant de ce privilège. Existe-t-il un moyen d'entrer dans la base de données en tant qu'accès? Je possède le serveur et j'ai un accès root.

31
Tony

Si vous vous êtes enfermé, vous devez procéder comme suit:

  1. Arrêtez votre instance MongoDB
  2. Supprimez les options --auth et/ou --keyfile de votre configuration MongoDB pour désactiver l'authentification
  3. Démarrer l'instance sans authentification
  4. Modifiez les utilisateurs selon vos besoins
  5. Redémarrez l'instance avec l'authentification activée
39
daveh

J'ai eu un problème similaire lorsque j'ai créé un utilisateur sans ajouter d'abord un superutilisateur. Les étapes suivantes ont aidé à résoudre le problème:

  1. Ouvrez le fichier de configuration MongoDB en utilisant Sudo (Sudo vi mongodb.conf).
    Le fichier se trouve dans /etc/ dossier.
  2. Commentaire "auth = true".
  3. Arrêtez le service MongoDB (Sudo service mongod stop)
  4. Démarrez le service MongoDB (Sudo service mongod start)
  5. Créez ensuite un superutilisateur "root" en utilisant la commande ci-dessous:

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

    Pour référence https://docs.mongodb.com/manual/reference/built-in-roles/#superuser-roles

  6. Revenez en arrière et décommentez "auth=true". Arrêtez et démarrez/redémarrez le service mongodb.

16
Divya Krishnan

Si vous utilisez un jeu de réplicas avec un keyfile

Sécurité entre les membres du jeu de répliques à l'aide de l'authentification interne

Le fichier de clés est utilisé pour l'authentification dans la réplication.

security:
  keyFile: <path-to-keyfile>
replication:
  replSetName: <replicaSetName>

Vous pouvez utiliser cette commande pour vous connecter en tant qu'administrateur à mongod:

mongo -u __system -p "$(tr -d '\011-\015\040' < path-to-keyfile)" --authenticationDatabase local

Afterword vous pouvez créer ou modifier votre utilisateur administrateur.

Rôle interne

__system MongoDB attribue ce rôle aux objets utilisateur qui représentent les membres du cluster, tels que les membres du jeu de réplicas et les instances de mongos. Le rôle autorise son titulaire à entreprendre toute action contre tout objet de la base de données.

N'attribuez pas ce rôle aux objets utilisateur représentant des applications ou des administrateurs humains, sauf dans des circonstances exceptionnelles.

7
Ivanov

Vérifiez les réponses à cette question, elles pourraient vous aider

https://stackoverflow.com/questions/20117104/mongodb-root-user

Fondamentalement, si vous avez toujours accès au serveur, vous pourrez peut-être accéder à la base de données Admin.

Il y a plus dans cette page http://docs.mongodb.org/v2.4/reference/user-privileges/

Notez que la version 2.6 change complètement la façon dont cela fonctionne. Pour 2.6, vous devrez passer plus de temps avec http://docs.mongodb.org/manual/security/

2
Meligy

Vous devez arrêter Mongo, supprimer les fichiers d'administration, puis démarrer Mongo

Sudo service mongod stop
mv /data/admin.* .
Sudo service mongod start
0
Tony