mongodが起動できない
環境
centos7
mongod --version 4.4.4
経緯
Mongodbでサーバーを作成するにあたり、ポートを変更しといたほうがいいよというおすすめがあったため、
mongod --port 11111 とかいう風に変更しようと試みたところからエラーが発生。その後、いろいろとエラー内容を見て、修正を試みたところ
,"s":"F", "c":"STORAGE", "id":50922, "ctx":"initandlisten","msg":"An incomplete repair has been detected! This is likely because a repair operation unexpectedly failed before completing. MongoDB will not start up again without --repair."
という絶望感溢れたFがログに現れたため、この通り、
mongod --repair
をしてみました。
わからないところ
現れたエラー内容は以下の通り
"s":"E", "c":"STORAGE", "id":20557, "ctx":"initandlisten","msg":"DBException in initAndListen, terminating","attr":{"error":"NonExistentPath: Data directory /data/db not found. Create the missing directory or specify another path using (1) the --dbpath command line option, or (2) by adding the 'storage.dbPath' option in the configuration file."
つまりは/data/dbが見つからないからなんとかしろというもの
そもそも
(2)に提案されている、構成ファイルのstorage.dbPathに追加してみれば?と言われてはいるものの、初めからあるぜ?
以下、mongod.conf.構成ファイルの内容
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Where and how to store data.
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
# engine:
# wiredTiger:
# how the process runs
processManagement:
# fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
*secureがないのは、構成ファイルを構成し直そうと奮闘した結果です。
それはともかく、storage.dbPathは以上のように書かれていると思います。
/var/lib/mongoのディレクトリはちゃんと存在しているのを確認しています。
試したこと
(1)を試してみた
$mongod --dbpath /var/lib/mongo
"s":"F", "c":"STORAGE", "id":50922, "ctx":"initandlisten","msg":"An incomplete repair has been detected! This is likely because a repair operation unexpectedly failed before completing. MongoDB will not start up again without --repair."
"s":"F", "c":"-", "id":23091, "ctx":"initandlisten","msg":"Fatal assertion","attr":{"msgid":50922,"file":"src/mongo/db/storage/storage_engine_init.cpp","line":86}
"s":"F", "c":"-", "id":23092, "ctx":"initandlisten","msg":"\n\n***aborting after fassert() failure\n\n"
結果は絶望感あふれるFが現れた。
/data/dbを作成してみた
$mongod --repair
"s":"W", "c":"CONTROL", "id":22120, "ctx":"initandlisten","msg":"Access control is not enabled for the database. Read and write access to data and configuration is unrestricted","tags":["startupWarnings"]
"s":"W", "c":"CONTROL", "id":22138, "ctx":"initandlisten","msg":"You are running this process as the root user, which is not recommended","tags":["startupWarnings"]
"s":"W", "c":"CONTROL", "id":22140, "ctx":"initandlisten","msg":"This server is bound to localhost. Remote systems will be unable to connect to this server. Start the server with --bind_ip <address> to specify which IP addresses it should serve responses from, or with --bind_ip_all to bind to all interfaces. If this behavior is desired, start the server with --bind_ip 127.0.0.1 to disable this warning","tags":["startupWarnings"]
Warningが発生
内容はデータベースへのアクセス権がありませんというもの。
rootで実行するべきではないというもの。
ローカルでバインドされているためリモートでは接続できないというもの。
SakuraVPSを利用しているため、リモートで接続できないのは困ったなぁ
ともかく、実行できた時のことは後に考えるとして、まずはアクセス権
/data/db
のディレクトリの両方とりあえずアクセス権を確認
$cd /
$ls -l | grep data
drwxr-xr-x 3 root root 4096 May 12 20:56 data
$chown mongod data
$ls -l | grep data
drwxr-xr-x 3 mongod root 4096 May 12 20:56 data
$cd data
$ls -l | grep db
drwxr-xr-x 3 root root 4096 May 12 20:56 db
$chown mongod db
$mongod
"s":"W", "c":"CONTROL", "id":22120, "ctx":"initandlisten","msg":"Access control is not enabled for the database. Read and write access to data and configuration is unrestricted","tags":["startupWarnings"]
以上のようなワーニングが。んー?んー。んー?
まだ、アクセス権がないー?
わかりません
どなたかなにか分かれば助けてください!お願いします!
0