Version Mongo: 3.2.11
J'ai créé une gouttelette mongoDB avec DigitalOcean afin de pouvoir connecter une base de données à mon petit jeu. Cependant, des complications après complications sont apparues. Je me connecte à la droplet via PuTTY et j'ai pu invoquer "mongo" puis taper "show dbs" pour voir toutes les bases de données actuelles.
J'avais modifié le fichier /etc/mongod.conf pour permettre la connexion à distance, et depuis lors, toute commande que j'invoque crache un message d'erreur:
Juste à travers un simple show dbs - je comprends cela.
> show dbs
2016-12-28T00:12:26.655+0000 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13
} :
_getErrorWithCode@src/mongo/Shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/Shell/mongo.js:62:1
shellHelper.show@src/mongo/Shell/utils.js:761:19
shellHelper@src/mongo/Shell/utils.js:651:15
@(shellhelp2):1:1
Je suis tellement confus quant à la raison de cela et j'ai parcouru Internet pour trouver tout ce qui pourrait éventuellement résoudre ce problème.
PS: j'avais modifié le fichier /etc/mongod.conf en décommentant la sécurité et en y ajoutant l'autorisation: "activé", ainsi qu'en commentant bindIp: 127.0.0.1 sous net.
Essayons ça:
Connectez-vous à votre droplet DO.
Dans votre /etc/mongod.conf, mettez en commentaire "sécurité" et restaurez bindIp à la valeur 127.0.0.1
Redémarrez votre instance mongod.
Connectez-vous à mongo (à ce stade sans sécurité).
Créez votre utilisateur administrateur dans mongo avec quelque chose comme ceci:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Assurez-vous que l'utilisateur a été créé avec succès.
Revenez à votre /etc/mongod.conf. Définissez votre valeur bindIp comme: 127.0.0.1, YOUR_DO_DROPLET_IP (aucun espace entre).
Décommentez la "sécurité", laissez "l'authentification" commentée, ajoutez ci-dessous "autorisation: activée"
Redémarrez l'instance mongod de votre serveur.
Connectez-vous à mongod à distance en utilisant:
mongo YOUR_DO_DROPLET_IP -u myUserAdmin -p --authenticationDatabase admin
Références: Authentification MongoDBActivation de l'authentification MongoDB