MongoDBが突然、起動できなくなりました。なんで?
調べてみるとアホなことしてる。コマンド名を間違えて実行してしまいテンポラリファイルのパーミッションが変わってた。
このコマンド名がややこしい。systemdのサービス名と同じにしたら間違えることあるでしょ?
MongoDB | 4.2.8 |
CentOS | 7.8.2003 |
急にMongoDBが起動できなくなりました。こんなエラーが出ます。
ジャーナルログを見ろってか? よし、見てみよう。
『子プロセスがエラー』『--forkオプションなしで起動してみろ』

ログファイルを見てみた。
あった。こいつだ。
Failed to unlink socket file /tmp/mongodb-27017.sock Operation not permitted
srwx------ 1 root root 0 6月 17 19:26 mongodb-27017.sock
rootユーザーが作ってる。そういえば、rootユーザでmongoコマンドと間違えて『mongod』って打った。
(mongoコマンドはクライアントツール起動のコマンド。)
ソケットファイルを退避してもう1回起動。
うん、直った。
ちなみに、ソケットファイルの権限はmongodユーザー。
srwx------ 1 root root 0 6月 17 19:26 mongodb-27017.sock.bak
srwx------ 1 mongod mongod 0 6月 17 19:58 mongodb-27017.sock
mongodは、サービス名だけでなくサービス起動コマンド名にもなっていて、いらぬ間違いを犯してroot権限でファイルを作ってしまったというオチ。
ダサい...。あーダサい。もう一回言っとこう。だっせ~。
こんな間違いやってはいけませんという話でした。
MongoDBはsystemctlに登録されているサービスなので、サービスのステータス(systemctl status)、ジャーナル(journalctl -ex)、サービスのログファイルを見れば、解決のヒントがある。