Autre possibilité: lors de la création de l'utilisateur, vous avez peut-être été accidentellement dans use
une base de données autre que admin
celle que vous vouliez, ou autre. Vous devez définir --authenticationDatabase
la base de données sous laquelle l'utilisateur a été réellement créé.
mongodb
semble vous mettre dans la test
base de données par défaut lorsque vous ouvrez le shell, de sorte que vous aurez besoin d'écrire --authenticationDatabase test
plutôt que --authenticationDatabase admin
si vous étiez accidentellement use
ING test
lors de l' exécution db.createUser(...)
.
En supposant que vous ayez accès à la machine qui exécute l'instance mongodb, y pourrait désactiver l'autorisation d' /etc/mongod.conf
entrée (commentaire authorization
qui est imbriqué sous sécurité), puis redémarrer votre serveur, puis exécuter:
mongo
show users
Et vous pourriez obtenir quelque chose comme ceci:
{
"_id" : "test.myusername",
"user" : "myusername",
"db" : "test",
"roles" : [
{
"role" : "dbOwner",
"db" : "mydatabasename"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
Notez que la db
valeur est égale à test
. C'est parce que lorsque j'ai créé l'utilisateur, je n'ai pas exécuté use admin
ou use desiredDatabaseName
. Ainsi, vous pouvez supprimer l'utilisateur avec db.dropUser("myusername")
, puis créer un autre utilisateur sous la base de données souhaitée comme suit:
use desiredDatabaseName
db.createUser(...)
J'espère que cela aide quelqu'un qui était dans ma position de noob avec ce truc.