J'ai commencé à utiliser MongoDB avec authentification. Conformément à la documentation, j'ai utilisé l'exception localhost pour créer un utilisateur admin avec le rôle unique userAdminAnyDatabase . Tout s'est bien passé. Lorsque j'exécute le client "mongo" et que je l'autorise sur la admin base de données après using cette base de données, je reçois le numéro 1 indiquant que l'autorisation a réussi. Cependant, toute commande que j'essaie d'exécuter entraîne une erreur "non autorisée", même en essayant d'afficher les collections de la base de données d'administration que je viens d'autoriser.
Quelqu'un peut-il me dire pourquoi et comment je peux y remédier? Actuellement, je cours sans authentification jusqu'à ce que je puisse résoudre ce problème.
Le rôle userAdminAnyDatabase
(et le rôle userAdmin
dont c'est une extension) donne simplement à votre utilisateur l'autorisation de lire et d'écrire sur la collection system.users
pour administrer les utilisateurs d'une base de données. Cela ne permet pas à l'utilisateur de lire ou d'écrire dans les collections réelles de la base de données. Pour cela, vous devez attribuer les rôles read
ou readWrite
.
Voir Rôles de privilèges utilisateur dans MongoDB et Ajouter un utilisateur à une base de données .
Essayez d’exécuter les étapes suivantes pour résoudre le problème d’authentification:
exemples de commandes:
mongod --port 27017 --dbpath /data/db1
use educationDb;
db.createUser({ user : 'readonly', pwd: 'readonly', roles : ['read']})
db.xyz.insert({"name":"nix.education"})
mongod --auth --port 27017 --dbpath /data/db1
use educationDb;
db.auth('readonly','readonly')