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.
Si vous vous êtes enfermé, vous devez procéder comme suit:
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:
Sudo
(Sudo vi mongodb.conf
)./etc/
dossier."auth = true"
.Sudo service mongod stop
)Sudo service mongod start
)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
Revenez en arrière et décommentez "auth=true"
. Arrêtez et démarrez/redémarrez le service mongodb.
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.
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/
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