impossible de se connecter au serveur 127.0.0.1 shell / mongo.js


88

quand je configure mongodb dans mon ubuntu, j'essaye: ./mongo il montre cette erreur:

 couldn't connect to server 127.0.0.1 shell/mongo.js

Alors qu'est-ce que je peux faire ,

Merci


Comment l'avez-vous installé? Avez-vous utilisé une aptitude? Avez-vous téléchargé le tarbal directement?
Bryan Migliorisi

1
J'ai eu cette erreur et c'était parce que sur ubuntu je n'ai pas couru en mongodpremier
Connor Leech

Réponses:


124
  • Supprimez manuellement le fichier de verrouillage: sudo rm /var/lib/mongodb/mongod.lock
  • Exécutez le script de réparation: sudo -u mongodb mongod -f /etc/mongodb.conf --repair

Veuillez noter ce qui suit:

  • Vous devez exécuter cette commande en tant qu'utilisateur mongodb. Si vous l'exécutez en tant que root, alors root possédera les fichiers dans / var / lib / mongodb / qui sont nécessaires pour exécuter le démon mongodb et donc lorsque le démon essaiera de s'exécuter plus tard en tant qu'utilisateur mongodb, il n'aura pas l'autorisation de démarrer . Dans ce cas, vous obtiendrez cette erreur: Impossible de créer / ouvrir le fichier de verrouillage pour lockfilepath: /var/lib/mongodb/mongod.lock errno: 13 Autorisation refusée, se terminant.
  • Sur Ubuntu, vous devez spécifier le fichier de configuration /etc/mongodb.conf à l'aide de l'indicateur -f. Sinon, il recherchera les fichiers de données au mauvais endroit et vous verrez l'erreur suivante: dbpath (/ data / db /) n'existe pas, se terminant.

Excellent lien. Résolu le problème exactement.
jaketrent

1
La réponse est au-dessus maintenant.
fady mohamed osman

2
comment exécuter cela en tant qu'utilisateur mongodb?
user4951

Ajoutez-vous simplement au groupe mongodb: useradd -G mongodb fady remplacez fady par votre nom d'utilisateur.
fady mohamed osman

2
J'ai dû utiliser à la fois les informations de cette réponse et celles de @boulder_ruby. Ceci parce que mon '/ data / db /' était manquant. Peut-être que cela pourrait être une bonne mise à jour pour que cette réponse soit plus complète.
Fabricio Buzeto

32
sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

Voici tout, parfois, il faut un peu de temps pour démarrer mongo après avoir effectué ces opérations.


Si j'essaye `sudo -u mongodb mongod -f /etc/mongodb.conf --repair` voici ce que j'obtiens:Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
Aleksandrus

21

Essayer d'exécuter $ mongod

Si vous obtenez une erreur telle que

MongoDB shell version: 2.0.5
connecting to: test
Fri Jun  1 11:20:33 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84
exception: connect failed

hisham-agil:~ hisham$ mongod
mongod --help for help and startup options
Fri Jun  1 11:24:47 [initandlisten] MongoDB starting : pid=53452 port=27017 dbpath=/data/db/ 64-bit host=hisham-agil.local
Fri Jun  1 11:24:47 [initandlisten] db version v2.0.5, pdfile version 4.5
Fri Jun  1 11:24:47 [initandlisten] git version: nogitversion
Fri Jun  1 11:24:47 [initandlisten] build info: Darwin gamma.local 11.3.0 Darwin Kernel Version 11.3.0: Thu Jan 12 18:48:32 PST 2012; root:xnu-1699.24.23~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_49
Fri Jun  1 11:24:47 [initandlisten] options: {}
Fri Jun  1 11:24:47 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Fri Jun  1 11:24:47 dbexit: 
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to close listening sockets...
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to flush diaglog...
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to close sockets...
Fri Jun  1 11:24:47 [initandlisten] shutdown: waiting for fs preallocator...
Fri Jun  1 11:24:47 [initandlisten] shutdown: lock for final commit...
Fri Jun  1 11:24:47 [initandlisten] shutdown: final commit...
Fri Jun  1 11:24:47 [initandlisten] shutdown: closing all files...
Fri Jun  1 11:24:47 [initandlisten] closeAllFiles() finished
Fri Jun  1 11:24:47 dbexit: really exiting now

Ensuite, vous avez rencontré une erreur de démarrage de base qui est assez courante.

Par défaut, mongod essaiera d'utiliser / data / db pour ses fichiers de base de données, qui dans ce cas, n'existe pas.

Tu ne peux pas commencer

mongo 

jusqu'à ce que tu gères

mongod.

Essayez de créer ces répertoires et assurez-vous qu'ils sont accessibles en écriture par le même utilisateur qui exécute le processus mongod.

** Voir une question similaire - Obtention d'une erreur, "Erreur: impossible de se connecter au serveur 127.0.0.1 shell / mongo.js" et en essayant d'exécuter mongodb sur mac osx lion


vous pouvez également définir le dbpath comme suit: mongod --dbpath ../data
cbaigorri

20

Ce n'est en fait pas une erreur ... Ce qui se passe ici, c'est que Mongo s'appuie sur un démon pour exécuter le serveur de base de données local, donc pour "lancer" le serveur mongo dans votre shell, vous devez démarrer le service mongo première.

Pour Fedora Linux (qui est la Distro que j'utilise), vous devez exécuter ces commandes:

1 sudo service mongod start
2 mongo

Et voila! le serveur va fonctionner. Maintenant, si vous voulez que le service Mongo démarre au démarrage du système, vous devez exécuter:

sudo chkconfig --levels 235 mongod on

Et c'est tout! Si vous faites cela, maintenant dans le shell, il vous suffit de taper mongo pour démarrer le serveur mais c'est à peu près tout, le problème est que vous devez d'abord démarrer le SERVICE, puis le SERVER :)

PS Les commandes que j'ai postées peuvent également fonctionner sur d'autres distributions Linux, pas seulement dans fedora ... Au cas où non, vous devrez peut-être modifier quelques mots en fonction de la distribution que vous utilisez;)


La même solution s'applique à la question: stackoverflow.com/questions/7958228/…
Jmlevick

Tant de fois je suis perplexe et je me gratte la tête pendant longtemps, et je réalise finalement: 'oh, je dois juste sudo. "
Ben auteur

2
et pour les variantes Debian / Ubuntu: sudo service mongodb start
ljs.dev

10

J'ai eu le même problème lorsque j'ai essayé d'installer mongo. J'ai eu une erreur comme,

Erreur

"Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84"

Solution:

Installez d'abord mongod en utilisant:

sudo apt-get install mongodb-server

Puis tapez

mongod --dbpath /mongo/db

ensuite

sudo rm /var/lib/mongodb/mongod.lock

ensuite

sudo -u mongodb mongod -f /etc/mongodb.conf  --repair

Merci


Cette méthode supprimera-t-elle les bases de données existantes dans mongo?
Evan

6

Vous devez supprimer le fichier de verrouillage mongod.lockou /var/lib/mongodb/mongod.locksur ubuntu, puis vous devez d'abord exécuter mongod.exeou service mongodb startsur ubuntu, puis exécuter mongo.exeou mongosur ubuntu.


L'OP est sur Ubuntu, donc je suis presque sûr qu'ils n'utiliseront aucun .exefichier.
me_and

J'obtiens ce message d'erreur et je ne trouve pas de "mongod.lock" sur mon système de fichiers. Ces instructions s'appliquent-elles à Mac OSX?
boulder_ruby

5

Soit votre mongod ne fonctionne pas (vérifiez à l'aide de la commande "ps"), soit il écoute sur une adresse IP extérieure et non sur localhost. Vérifiez d'abord la liste des processus si «mongod» est en cours d'exécution. Si oui, vérifiez avec "netstat -nap" le port associé.

Bien sûr, vous pouvez démarrer manuellement mongod sur la console ou même consulter le fichier journal de mongod (s'il y en a un configuré ... selon la façon dont vous avez installé mongod).


5

Vous devez d'abord vous assurer que tous les fichiers et répertoires de votre dossier / var / lib / mongodb / (ou du dossier vers lequel pointe dbpath) appartiennent à l'utilisateur mongodb et au groupe mongodb.

cd /var/lib/mongodb/
sudo chown mongodb filename.*
sudo chgrp mongodb filename.*
sudo chown -R mongodb directory
sudo chgrp -R mongodb directory

(Remplacez le nom de fichier et le répertoire par leurs noms respectifs)

Ensuite, vous pouvez supprimer le verrou, réparer la base de données et redémarrer le démon comme d'autres personnes l'ont déjà mentionné:

sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

Comment se fait-il qu'il n'y ait pas de votes positifs à ce sujet? C'était la seule solution, parmi une demi-douzaine d'entrées SO que j'ai recherchées, qui a fonctionné pour moi. Merci Monsieur.
FRD

La commande pour démarrer avec le fichier de configuration et forcer une réparation est sudo -u mongodb mongod -f /etc/mongod.conf --repairsur Ubuntu 14.
okoboko

5

Commencez par démarrer votre serveur mongo en

Users-MacBook-Pro:csv1 Admin$ mongod
all output going to: /usr/local/var/log/mongodb/mongo.log

Ensuite, ouvrez une autre fenêtre de terminal et ouvrez le shell

Users-MacBook-Pro:csv1 Admin$ mongo

2

Vérifiez également que votre partition racine dispose de suffisamment d'espace pour démarrer mongod.

df -h /

Vous verrez un peu comme ça lors du lancement de mongod:

Mon Aug 12 17:02:59.159 [initandlisten] recover : no journal files present, no recovery needed
Mon Aug 12 17:02:59.159 [initandlisten] 
Mon Aug 12 17:02:59.159 [initandlisten] ERROR: Insufficient free space for journal files
Mon Aug 12 17:02:59.159 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
Mon Aug 12 17:02:59.159 [initandlisten] 
Mon Aug 12 17:02:59.159 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Mon Aug 12 17:02:59.159 dbexit: 
Mon Aug 12 17:02:59.159 [initandlisten] shutdown: going to close listening sockets...

1

Sur Ubuntu, essayez ceci:

sudo invoke-rc.d mongodb start

1

Il peut s'agir d'une combinaison de $ PATH et d'un problème d'autorisation.

Essayez de suivre les étapes ci-dessous:

Mettez à jour votre variable $ PATH pour qu'elle pointe vers votre fichier bin MongoDB. Dans mon cas, installez MongoDB dans ce dossier:

/usr/local/Cellar/mongodb/2.4.6/

Afin de mettre à jour votre variable $ PATH, procédez comme suit:

$ sudo vi /etc/paths

Ensuite, appuyez sur «i» pour insérer du texte dans Vi et ajoutez le chemin de votre MongoDB à la fin du fichier «chemins» et redémarrez le terminal.

/usr/local/Cellar/mongodb/2.4.6/bin

Utilisez 'Esc: w q' pour enregistrer et quitter l'éditeur Vi.

Utilisez echo pour afficher votre variable de chemin:

$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/Cellar/mongodb/2.4.6/bin

Maintenant, essayez de vérifier la version Mongo, si vous suivez, alors vous êtes sur la bonne voie!

$ mongo --version
MongoDB shell version: 2.4.6

Nous devons maintenant créer le répertoire de la base de données. J'ai utilisé l'emplacement par défaut '/ data / db' suggéré dans la documentation MongoDB. J'ai également créé un répertoire de journaux pour éviter tout problème d'autorisation pendant que Mongo essaie de créer des journaux. Changez de propriétaire et cela fera l'affaire.

$ sudo mkdir /data/db
$ sudo mkdir /data/log
$ whoami
username
$ chown -R username /data

Maintenant, nous allons créer un fichier de configuration par défaut pour MongoDB à fournir pour la première fois que nous exécutons la commande 'mongod'. Maintenant, j'aimerais également souligner que «mongod» lancera un service, qui écoutera les connexions de données entrantes. C'est similaire à l'exécution de '$ service mysqld start'. Allons-y et créons le fichier de configuration. Veuillez garder à l'esprit que j'ai créé un fichier de configuration très basique. Cependant, vous pouvez ajouter de nombreuses autres variables pour configurer MongoDB. C'est la première fois que je joue avec MongoDB, donc je sais tout ce que j'ai lu sur la documentation MongoDB! J'ai créé «mongodb.conf».

$ sudo vi /etc/mongodb.conf

Ajouter suivant:

fork = true
port = 27017
quiet = true
dbpath = /data/db
logpath = /data/log/mongod.log
logappend = true
journal = true

Veuillez noter que le port par défaut pour le serveur MongoDB est 27017. Utilisez votre propre chemin pour dbpath et logpath que vous avez créés à l'étape 5. N'oubliez pas de fermer et d'enregistrer le fichier de configuration.

Nous sommes maintenant tous prêts à démarrer notre service MongoDB. Ouvrez deux instances de Terminal.Dans le Terminal 1, tapez:

$ sudo mongod -f /etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3516
all output going to: /data/log/mongod.log
child process started successfully, parent exiting

Si vous recevez le message ci-dessus, sachez que vous avez démarré avec succès votre service Mongod.

Maintenant, pour vous y connecter, dans le terminal 2 tapez suivant:

$mongo test
MongoDB shell version: 2.4.6
connecting to: test
Server has startup warnings:
Tue Sep 3 16:55:43.527 [initandlisten]
Tue Sep 3 16:55:43.527 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
>

Ignorez les avertissements, mais vous êtes connecté avec succès à la base de données «test»! Cool!

C'est tout. J'ai appliqué cette solution, lorsque j'ai essayé d'installer une copie de MongoDB sur mon Mac pour la première fois. Voyez si cela vous aide aussi.

Pour un article détaillé, vous pouvez aller ici - http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094 .

J'espère que ça aide!

A bientôt, Chinmay


Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses aux liens uniquement peuvent devenir invalides si la page liée change.
Radim Köhler

@ RadimKöhler, merci pour la mise en garde. J'ai corrigé la réponse. J'espère que cela aidera quelqu'un. À votre santé.
Chinmay

1

J'ai résolu ce problème sur ubuntu 12.04 en suivant les étapes:
1) sudo rm / var / log / mongodb
2) sudo rm / var / lib / mongodb
3) J'ai supprimé mongo puis je l'ai réinstallé
4) sudo service mongodb restart

et tout va bien

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.