comment puis-je me connecter à un serveur mongo distant depuis un terminal Mac OS

101

Je voudrais passer dans le shell mongo du terminal de mon MacBook. Cependant, je suis intéressé par la connexion à une instance Mongo qui s'exécute dans le cloud (instance compose.io via l'addon Heroku). J'ai le nom, le mot de passe, l'hôte, le port et le nom de la base de données de l'URI MongoDB:

mongodb://username:[email protected]:10011/my_database

J'ai installé mongodb sur mon MacBook en utilisant Homebrew non pas parce que je veux que Mongo fonctionne sur mon Mac, mais simplement pour accéder au programme shell mongo afin de me connecter à cette base de données distante.

Cependant, je ne trouve pas la bonne commande pour m'obtenir l'accès complet au shell que je voudrais. En utilisant les instructions trouvées ici http://docs.mongodb.org/manual/reference/program/mongo/ (recherchez "remote") Je peux obtenir ce qui ressemble à une connexion, mais sans donner mon nom d'utilisateur ou mon mot de passe, je ne suis pas entièrement connecté. L'exécution db.auth(username, password)renvoie 1 (par opposition à «échec d'authentification» lorsque je fournis un nom d'utilisateur et un mot de passe incorrects), mais je continue à recevoir un message d'erreur «non autorisé» lors de l'émission de la show dbscommande.

Jononomo
la source

Réponses:

170

Vous vous connectez probablement correctement mais vous n'avez pas les privilèges suffisants pour exécuter show dbs.

Vous n'avez pas besoin d'exécuter db.auth si vous passez l'authentification dans la ligne de commande:

mongo somewhere.mongolayer.com:10011/my_database -u username -p password

Une fois connecté, pouvez-vous voir les collections?

> show collections

Si c'est le cas, tout va bien et vous n'avez tout simplement pas les privilèges d'administrateur sur la base de données et ne pouvez pas exécuter le show dbs

Ben
la source
Je suis capable de me connecter en utilisant la technique que vous décrivez. Cependant, je ne peux exécuter aucune commande, comme "afficher les collections" ou "afficher les utilisateurs". Je souhaite obtenir une erreur "non autorisé pour la requête sur my_db.system.namespaces".
jononomo
1
Ok, donc heroku a nommé au hasard ma base de données mongo un nom différent de celui que j'ai utilisé en dev. Je pense que c'était essentiellement mon problème.
jononomo
1
Mais si j'ai? AuthSource = admin à la fin. Ça ne marche pas. --authenticationDatabase n'aide pas.
Roman Kazanovskyi
27017 est cependant le port par défaut. juste au cas où l'exemple de port ne fonctionnerait pas. docs.mongodb.com/manual/reference/default-mongodb-port
modification du
51

Avec Mongo 3.2 et supérieur, utilisez simplement votre chaîne de connexion telle quelle:

mongo mongodb://username:[email protected]:10011/my_database
Amio.io
la source
0

Une autre façon de procéder est:

mongo mongodb://mongoDbIPorDomain:port
KayV
la source