web-dev-qa-db-fra.com

MongoDB: Toutes les commandes crachent "non autorisé par l'administrateur à exécuter la commande"

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.

3
Orange Receptacle

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

3
moalf