impossible de démarrer le serveur local mongodb

167

Je suis nouveau sur mongodb .. quand j'ai essayé d'exécuter le serveur local de mongodb avec la mongodcommande, il n'a pas pu s'exécuter et a jeté cette erreur.

/usr/lib/mongodb/mongod --help for help and startup options
Sat Jun 25 09:38:51 MongoDB starting : pid=1782 port=27017 dbpath=/data/db/ 32-bit 

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
**       see http://blog.mongodb.org/post/137788967/32-bit-limitations

Sat Jun 25 09:38:51 db version v1.6.3, pdfile version 4.5
Sat Jun 25 09:38:51 git version: nogitversion
Sat Jun 25 09:38:51 sys info: Linux vernadsky 2.6.24-27-server #1 SMP Fri Mar 12 01:45:06 UTC 2010 i686 BOOST_LIB_VERSION=1_42
Sat Jun 25 09:38:51 [initandlisten] *** warning: spider monkey build without utf8 support.  consider rebuilding with utf8 support
Sat Jun 25 09:38:51 [initandlisten] waiting for connections on port 27017
Sat Jun 25 09:38:51 [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Sat Jun 25 09:38:51 [initandlisten]   addr already in use
Sat Jun 25 09:38:51 [initandlisten] now exiting
Sat Jun 25 09:38:51 dbexit: 

Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close listening sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to flush oplog...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: waiting for fs preallocator...
Sat Jun 25 09:38:51 [initandlisten] shutdown: closing all files...
Sat Jun 25 09:38:51     closeAllFiles() finished

Sat Jun 25 09:38:51 [initandlisten] shutdown: removing fs lock...
Sat Jun 25 09:38:51 dbexit: really exiting now

J'ai essayé de supprimer le mongod.lockfichier ... J'ai couru mongod --repair.. J'ai également changé les autorisations du mongod.lockfichier.

mais rien ne semble fonctionner .. il continue d'afficher la même erreur .. que dois-je faire.?

J'ai également installé la version 1.7.4.1 de git mais il affiche nogitversion par erreur.

sakthig
la source
J'ai eu le même problème et cette solution a fonctionné pour moi stackoverflow.com/questions/5798549/…
Eddie

Réponses:

176

Essayer:

sudo service mongod stop
sudo mongod

Pour arrêter le service mongodb actif actuel, vous permettant ensuite d'en démarrer un nouveau

morphie
la source
1
J'ai aussi reçu le message de service mais j'ai décidé de l'ignorer et d'essayer de redémarrer à nouveau avec "sudo mongod" et après cela a finalement fonctionné
kpierce8
2
Cela ne devrait-il pas être mongod (pas mongodb)? Basé sur docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/…
xavier
5
sudo service mongodb stopa travaillé pour moi sur Ubuntu 14.10.
Joe Corneli
1
Il n'y a pas de commande de service sur OS X. Si vous avez installé mongo via homebrew, vous pouvez utiliser brew services. (via unix.stackexchange.com/questions/155715/… )
Charlie Stanard
1
@HarshaMV `arrêt des services de brassage <formule>`
Jacob
149

Ne tuez pas le processus en utilisant le signal -9 car cela causerait des dommages: http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

Utilisez sudo killall -15 mongodplutôt

RS
la source
2
Cela ne répond pas à la question initiale.
Beau Grantham
8
killall mongodfait la même chose aussi. le -15dit killalld'envoyer un signal SIGTERM, ce qu'il fait par défaut.
T Blank
4
En fait, faire un killall a fonctionné pour moi au lieu d'essayer d'arrêter le service. Donc, même si cela ne répond pas aux questions. C'était utile
André Pena
59

Andreas Jung:

"Sat Jun 25 09:38:51 [initandlisten] listen (): bind () failed errno: 98 Adresse déjà utilisée pour le socket: 0.0.0.0:27017

est auto-parlant.

Une autre instance de mongod est déjà en cours d'exécution et alloue le port par défaut de MongoDB qui est 27017.

Supprimez l'autre processus ou utilisez un port différent. "

Dans ce cas, tapez la commande suivante

ps wuax | grep mongo

Vous devriez voir quelque chose qui ressemble à ceci

User           31936   0.5 0.4 2719784 35624   ?? S     7:34pm   0:09.98 mongod
User           31945   0.0 0.0 2423368   184 s000 R+   8:24pm   0:00.00 grep mongo

Entrez maintenant la commande kill pour l'instance mongod (31936 dans ce cas):

kill 31936
Sacha Nacar
la source
29

Sat Jun 25 09:38:51 [initandlisten] listen (): bind () failed errno: 98 Adresse déjà utilisée pour le socket: 0.0.0.0:27017

est auto-parlant.

Une autre instance de mongod est déjà en cours d'exécution et alloue le port par défaut de MongoDB qui est 27017.

Tuez l'autre processus ou utilisez un port différent.

Andreas Jung
la source
47
Trouvé ceci sur la page de démarrage ... ** Lorsque mongodb ** est installé via aptitude, il est déjà en cours d'exécution (donc dans l'exemple, vous n'avez pas besoin de le démarrer). Ensuite, tapez simplement: $ mongo .. puisque personnellement je n'ai pas commencé mongod et je suivais le tutoriel de démarrage rapide .. je ne savais pas qu'il fonctionnait déjà ...
sakthig
@Sakti: Oui, ça tourne déjà pour moi! Je suppose que je l'ai fait via aptitude. THX!
sk8terboi87 ツ
29

Découvrez sur netstat quel processus exécute le port mongodb (27017)

commander:

sudo netstat -tulpn | grep :27017

La sortie sera:

tcp        0      0 0.0.0.0:27017           0.0.0.0:* 
LISTEN      6432/mongod

Dans mon cas, "6432" est le pid, il peut être différent dans votre cas. Puis tuez ce processus en utilisant la commande suivante:

sudo kill <pid>

C'est tout!

Kabirkukreti
la source
25

Utilisation:

sudo killall mongod

Cela arrêtera le serveur.

Puis redémarrez mongodpar:

sudo service mongod restart

ça devrait marcher.

Asutosh Hota
la source
23

Vous avez déjà un processus en cours d'exécution. Vous pouvez le tuer avec la commande:

killall mongod
Younux
la source
15

Vous voulez faire killall -15 mongodparce qu'il est encore en cours d' exécution: Address already in use for socket: 0.0.0.0:27017.

Ensuite, vous pouvez courir à mongodnouveau.

John Ottenlips
la source
Pourquoi pas simplement killall mongod?
Dmitri Zaitsev
1
No matching processes belonging to you were found
retrovertigo
Alors mongod ne doit pas être un processus en cours d'exécution. Peut-être que l'adresse est utilisée par un processus différent
John Ottenlips
7

Essayez un autre port si vous ne trouvez aucun processus en cours d'exécution ou si leur suppression ne fonctionne pas. Par exemple, essayez 27018 car la valeur par défaut est 27017.

mongod  --port 27018

J'ai découvert cela avec la commande, mongod --help

Samantha
la source
7

Je suggère d'utiliser à la place:

$sudo service mongodb stop

Cela pourrait marcher.

Nick Cuevas
la source
6

Essayez soit killall -15 mongod / killall mongod Même après cela, si cela ne fonctionne pas, supprimez le dossier de stockage db en tapant les commandes suivantes sudo rm -rf / data / db sudo mkdir / data / db sudo chmod 777 / data / db

SU15
la source
5

OS X. Moniteur d'activité , recherchez mongod , traversez-le. puis exécutez à nouveau mongod. problème résolu.

Hussain Chatha
la source
OP ne spécifie pas le système d'exploitation mais les fichiers journaux indiquent clairement Linux.
Nic Nilov le
4

Ouvrez le terminal et tapez:

mkdir -p /data/db

Entrez ensuite:

mongod
Jhonatta
la source
3

J'ai eu le même problème si j'ai essayé d'ouvrir une nouvelle instance de mongod et il a dit qu'il était déjà en cours d'exécution.

J'ai vérifié les documents et il a dit de taper

mongo
use admin
db.shutdownServer()
Goodbedford
la source
3

MongoDB ne peut pas démarrer est principalement dû à un arrêt malpropre. Pour y remédier, supprimez le fichier mongod.lock. Ce fichier se trouve dans le dossier de données.

Trouvez où se trouve votre dossier de données en regardant dans le fichier mongodb.conf ou mongod.conf. (Fichier conf sous / etc sur les systèmes Linux.)

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb

Par exemple, en utilisant la configuration ci-dessus, le fichier se trouve dans /var/lib/mongodb/mongod.lock. Retirez-le simplement et redémarrez mongodb.

Praveen Kumar KS
la source
1
Cela m'est arrivé plus d'une fois, en particulier sur les serveurs cloud qui ont été "hard reset" lorsqu'ils ne répondent pas. C'est une solution facile et devrait être une réponse de premier ordre.
SevakPrime
2

J'ai rencontré le même problème. Bien que le mongodbservice ne soit pas en cours d'exécution, le journal a affiché un address already in usemessage.

 $netstat -tulpn | grep :27017 

ne renvoie rien

Une analyse plus approfondie a révélé que le problème était dû au fichier de verrouillage. Le service fonctionne correctement, après avoir supprimé le fichier de verrouillage et redémarré.

$grep "dbpath" /etc/mongodb.conf

dbpath =/var/lib/mongodb

$ls /var/lib/mongodb/mongod.lock

$service mongod start
Sushma Korati
la source
2

Recherchez les journaux sur /var/log/mongodb/mongod.log et essayez de déduire l'erreur. Dans mon cas, c'était

Impossible de dissocier le fichier socket /tmp/mongodb-27017.sock errno: 1 Opération non autorisée

Supprimé /tmp/mongodb-27017.sock et cela a fonctionné.

Ashish Tiwari
la source
1

essayer

/usr/lib/mongodb/mongod.exe --dbpath c: data \ db

--dbpath (doit être suivi du chemin de votre base de données)

user3176262
la source
1

Il est possible que le serveur soit déjà en cours d'exécution. Veuillez le vérifier par la commande mongo fonctionne ou non.

Hemant Sharma
la source
1

Pour résoudre le problème sous Windows , les étapes ci-dessous fonctionnent pour moi:

Par exemple, la version 3.6 de mongoDB est installée et le chemin d'installation de MongoDB est "D: \ Program Files \ MongoDB".

Créez le dossier D: \ mongodb \ logs, puis créez le fichier mongodb.log dans ce dossier.

Exécutez cmd.exe en tant qu'administrateur ,

D:\Program Files\MongoDB\Server\3.6\bin>taskkill /F /IM mongod.exe
D:\Program Files\MongoDB\Server\3.6\bin>mongod.exe --logpath D:\mongodb\logs\mongodb.log --logappend --dbpath D:\mongodb\data --directoryperdb --serviceName MongoDB --remove
D:\Program Files\MongoDB\Server\3.6\bin>mongod --logpath "D:\mongodb\logs\mongodb.log" --logappend --dbpath "D:\mongodb\data" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

Supprimez ces deux fichiers mongod.locket storage.bsonsous le dossier "D: \ mongodb \ data".

Tapez ensuite net start MongoDBla cmd en utilisant les privilèges d'administrateur, le problème sera résolu.

Bravo Yeung
la source
0

Il affiche l'erreur listen (): bind () failed errno: 98 Adresse déjà utilisée pour le socket: 0.0.0.0:27017 ie l'adresse 27017 est déjà utilisée par un autre service. veuillez vérifier cela par la commande "netstat -apt | grep" 27017 ""

user3273866
la source
0

(Si vous utilisez Linux,) si

mongod --shutdown --config=path/to/your/configFile.conf 

ou

mongod --repair --config=path/to/your/configFile.conf 

n'a pas résolu le problème, déconnexion et reconnexion . Cela a résolu mon problème.

Ou vous pouvez tuer le processus manuellement à partir du terminal, je suppose.

Javad Sadeqzadeh
la source
0

Il semble que la même erreur s'affiche dans les journaux lorsque vous manquez le paramètre d'environnement LC_ALL. C'est déroutant, mais vous pouvez exécuter le mongoclient pour voir que c'est un problème.

Karol Wojtaszek
la source
0

si vous exécutez mongo pour la première fois, vous voudrez peut-être définir le chemin en premier

mongod --dbpath <path to the directory>
Sumeet Masih
la source
0

Le processus de mise à mort n'a pas résolu mon problème. Mon mac s'était écrasé et au redémarrage, certains fichiers de verrouillage (mongod.lock, WiredTiger.lock) étaient présents dans mongo dbPath. J'ai déplacé ces fichiers dans un dossier différent (je n'ai pas supprimé pour éviter plus de problèmes), puis cela a fonctionné. Sur successul star, j'ai supprimé les fichiers de verrouillage déplacés.

Test de test
la source