一応環境
Mac OS 10.12.6
Homebrew 1.3.2
MongDB 3.4.7
みなさん、たまにlsof -iとかで動きっぱなしのプロセスとかないかなーって調べたりしますよね?
そしてなんとなくこれ無駄なんじゃないか?killしてダメでも再起動とかでどうにかなんだろとか思ってちょっとkillしちゃうことありますよね?(ない人には多分関係のない記事です)
私の場合、mysqlとmongodbがLISTENしてまして、mysqlは昔にちょっとだけ使っただけだったのでとりあえずkillして問題なし。そして、mongodbも今は起動してないのになんでずっとLISTENしてんだろう?別のmongodb動いてるのかな?とかよくわかってないくせに思い込んでkillしてしまいました。
その結果...
ryusaka-MBA:~$ mongo
MongoDB shell version: 3.0.7
connecting to: test
2016-02-13T02:10:30.013+0900 W NETWORK Failed to connect to 127.0.0.1:27017, reason: errno:61 Connection refused
2016-02-13T02:10:30.015+0900 E QUERY Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed
at connect (src/mongo/shell/mongo.js:179:14)
at (connect):1:6 at src/mongo/shell/mongo.js:179
exception: connect failed
こんなエラーが・・・調べてみるとmongod --repairをしてみろとかmongod.lockを消してみろとか記事が出て来るんですが、どれも解決はせず。どうやら自動で起動できていたものが自分でsudo mongod --dbpath=/usr/local/var/mongodbと打たないと起動しなくなっていました。
どうやらHomebrewで自動起動ができる(おそらくmongodbを過去にHomebrewでインストールした時に設定していたと考えられる)とわかりました。
brew services start mongodb
これで大丈夫と思い
ryusaka-MBA:~$ mongo
......同じエラーが泣
ここから堂々巡りのどハマりをして半日後・・・
sudo mongod --dbpath=/usr/local/var/mongodbってsudoじゃん...
もしかしたら・・・
sudo brew services start mongodb
・・・動いた!!
というクソみたいな結末でしたとさ。お恥ずかしい話です。
どうやらsudoをつけるかつけないかで追加先が異なるようです。
sudo無しでLaunchAgent(ログイン時にユーザー権限で起動)、
sudoありでLaunchDaemon(起動時にlaunchedで起動)に追加されます。