ロックファイルを作成/開くことができません:/data/mongod.lock errno:13権限が拒否されました


187

mongoにec2でマウントされたドライブを使用させるにはどうすればよいですか?本当にわかりません。ドライブをルートとしてec2でフォーマットしたボリュームに接続し、ルートとして起動しましたが、ルートとしてアクセスできませんか?私はubuntu 12.04で実行しています。他のモンゴは走っていません

mongoが/ dataに「db」ディレクトリを作成したことを確認します(つまり、/ data / db)

cd /
ls -al
drwxr-xr-x  4 root root  4096 Mar  5 16:28 data

cd /data
ls -al
total 28
drwxr-xr-x  4 root root  4096 Mar  5 16:28 .
drwxr-xr-x 24 root root  4096 Mar  5 16:28 ..
drwxr-xr-x  2 root root  4096 Mar  5 16:28 db
drwx------  2 root root 16384 Mar  5 16:20 lost+found


sudo mkfs.ext3 /dev/xvdh
sudo mkdir /data
sudo su - -c 'echo "/dev/xvdh %s auto noatime 0 0" | sudo tee -a /etc/fstab'
sudo mount /data

sudo service mongodb start
mongodb start/running, process 17169

sudo ps -ef | grep mongod
ubuntu   15763 15634  0 16:32 pts/2    00:00:00 tail -f mongodb.log
ubuntu   18049 15766  0 16:43 pts/3    00:00:00 grep --color=auto mongod


Tue Mar  5 16:33:15 [initandlisten] MongoDB starting : pid=15890 port=27017 dbpath=/data 64-bit host=aws-mongo-server-east-staging-20130305161917
Tue Mar  5 16:33:15 [initandlisten] db version v2.2.3, pdfile version 4.5
Tue Mar  5 16:33:15 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
Tue Mar  5 16:33:15 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Tue Mar  5 16:33:15 [initandlisten] options: { bind_ip: "10.157.60.27", config: "/etc/mongodb.conf", dbpath: "/data", logappend: "true", logpath: "/var/log/mongodb/mongodb.log", replSet: "heythat" }
Tue Mar  5 16:33:15 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Tue Mar  5 16:33:15 dbexit: 
Tue Mar  5 16:33:15 [initandlisten] shutdown: going to close listening sockets...
Tue Mar  5 16:33:15 [initandlisten] shutdown: going to flush diaglog...
Tue Mar  5 16:33:15 [initandlisten] shutdown: going to close sockets...
Tue Mar  5 16:33:15 [initandlisten] shutdown: waiting for fs preallocator...
Tue Mar  5 16:33:15 [initandlisten] shutdown: lock for final commit...
Tue Mar  5 16:33:15 [initandlisten] shutdown: final commit...
Tue Mar  5 16:33:15 [initandlisten] shutdown: closing all files...
Tue Mar  5 16:33:15 [initandlisten] closeAllFiles() finished
Tue Mar  5 16:33:15 [initandlisten] shutdown: removing fs lock...
Tue Mar  5 16:33:15 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Tue Mar  5 16:33:15 dbexit: really exiting now

以下は、ロックファイルを削除したときに再起動した場合です。

Tue Mar  5 16:59:15 [initandlisten] MongoDB starting : pid=21091 port=27017 dbpath=/data 64-bit host=aws-mongo-server-east-staging-20130305161917
Tue Mar  5 16:59:15 [initandlisten] db version v2.2.3, pdfile version 4.5
Tue Mar  5 16:59:15 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
Tue Mar  5 16:59:15 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Tue Mar  5 16:59:15 [initandlisten] options: { bind_ip: "10.157.60.27", config: "/etc/mongodb.conf", dbpath: "/data", logappend: "true", logpath: "/var/log/mongodb/mongodb.log", replSet: "heythat" }
Tue Mar  5 16:59:15 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Tue Mar  5 16:59:15 dbexit: 
Tue Mar  5 16:59:15 [initandlisten] shutdown: going to close listening sockets...
Tue Mar  5 16:59:15 [initandlisten] shutdown: going to flush diaglog...
Tue Mar  5 16:59:15 [initandlisten] shutdown: going to close sockets...
Tue Mar  5 16:59:15 [initandlisten] shutdown: waiting for fs preallocator...
Tue Mar  5 16:59:15 [initandlisten] shutdown: lock for final commit...
Tue Mar  5 16:59:15 [initandlisten] shutdown: final commit...
Tue Mar  5 16:59:15 [initandlisten] shutdown: closing all files...
Tue Mar  5 16:59:15 [initandlisten] closeAllFiles() finished
Tue Mar  5 16:59:15 [initandlisten] shutdown: removing fs lock...
Tue Mar  5 16:59:15 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Tue Mar  5 16:59:15 dbexit: really exiting now

1
前回実行したときにmongodが異常終了し、作成したmongod.lockファイルをクリーンアップできなかったようです。このファイルは、複数のmongodインスタンスがファイルで作業するのを防ぐために存在します。ファイルを削除してmongodを再度実行すると、問題は発生しません
ACE

2
更新された質問を参照してください。ロックファイルを削除した場合の同じ問題
2013年

それでもロックファイルに問題があるようですが、ロックファイルがあるディレクトリの権限は何ですか?TBH私はこれを2つのケースでのみ見ました:1)ロックファイルがすでに存在していて、2)mongodはロックファイルを希望の場所に作成する権限を持っていません。
ACE

1
mongoユーザーがchown mongodb:mongodb on /var/lib/monogdbデータディレクトリにもアクセスできることを確認する必要があります。
Hans N. Hjort 2013年

回答:


117

Ubuntu ec2インスタンスでも同じ問題が発生していました。私はこのアマゾンの記事7ページをフォローしていました:

http://d36cz9buwru1tt.cloudfront.net/AWS_NoSQL_MongoDB.pdf

のMongodbパス/etc/mongodb.conf/var/lib/mongodb(プライマリインストールの場所および動作)に設定されました。に変わったとき/data/db(EBSボリューム)、「errno:13 Permission denied」が表示されました。

  1. 最初に走った sudo service mongodb stop
  2. 次にls -la/var/lib/mongodb(既存のパス)に割り当てられているグループと所有者のmongodbを確認し、/data/db(新しいパス)をchownとに変更しましたchgrp。(例:sudo chown -R mongodb:mongodb /data/db
  3. それから私は、パスを更新etc/mongodb.confする/data/dbと、古いMongoのファイルを削除しました/var/lib/mongodbディレクトリを。
  4. それから私は走った sudo service mongodb startて1分ほど待った。すぐに27017に接続しようとすると、接続できなくなります。
  5. 分のチェック/data/db(EBSボリューム)の後、mongoはジャーナル、mongod.lock、local.ns、local.0などを配置しているはずです。そうでない場合はsudo service mongodb restart、1分後に確認してください。

私はこれで1時間以上過ごしました。グループを変更して古いファイルを削除する必要はおそらくないでしょうが、それが私にとってはうまくいきました。

これは、ecsインスタンスへのebsボリュームのマウントに関する素晴らしいビデオです。

http://www.youtube.com/watch?v=gBII3o3BofU


8
私はこの問題に苦労していて、ls -lahZを使用して宛先フォルダーを一覧表示すると、セキュリティコンテキストが得られることに気づきました。mongoデータフォルダーのコンテキストは次のように設定する必要があります。 "sudo chcon -R -u system_u -t mongod_var_lib_t / folder / data "これは、明白な権限とuser:groupの組み合わせに加えて。それが役に立てば幸い。
jmdiego 2015

478

私はこの方法を使用して問題を解決します:

sudo chown -R mongodb:mongodb /data/db

8
-Rオプションを追加すれば完璧です:)
Adrien

7
それは:初心者向けのsudo chown -R id -u/ data / dbです。:)
rncrtr 2014年

8
バックティックに問題があることがわかりました。sudo chown $USER /data/db元のコマンドの代わりに実行してみてください。
Paymahn Moghadasian 2015年

7
これが正解です。@Tampaあなたはこの答えを受け入れるべきです。ところで- id -U$USER物は必要ありません。mongoには独自のユーザー/グループがあります。mongodb:mongodbはハードコーディングできます。したがって、コマンドは単純ですsudo chown -R mognodb:mognodb /data/db
男モグラビ2015

11
これは実際に何をしますか?機能しますが、理解したいと
思い

81

私の場合(AWS EC2インスタンス、Ubuntu)は助けました:

$ sudo mkdir -p /data/db/
$ sudo chown `USERNAME` /data/db

その後、すべてがうまくいきました。


6
これが最良の答えです
。mongodを

2
はい、これが最良の答えです
Vegan Sv

1
の所有権を変更/譲渡/data/dbしますUSERNAME
Saif 2017

52

/data/dbフォルダへのアクセスを許可するだけです。

と入力しsudo chown -R <USERNAME> /data/db<USERNAME>ユーザー名に置き換えます。

と入力すると、ユーザー名を見つけることができますwhoami


12

このチュートリアルに従って、Ubuntu 14.04を搭載したEC2にEBSを搭載したmongodbをインストールしました。

http://docs.mongodb.org/ecosystem/platforms/amazon-ec2/

しかし、提案されたchownの代わりに、次のようにしました。

sudo chown -R mongodb:mongodb /data /log /journal

問題を解決するには


2
はい、所有者は何か「ルート」ではなく「mongodb」でなければならないようです。
Imskull 2015年

10

私も同様の問題を抱えていましたが、実際の理由は、以前の試行からすでに実行されているmongodセッションがあったためです。

私は走った

killall mongod

その他はすべて期待どおりに実行されました。

killallコマンドは、実際のUIDを持つすべてのプロセスにTERMシグナルを送信します。したがって、実行中のmongodのインスタンスをすべて強制終了し、独自のインスタンスを開始できるようにします。


これは文字通り最も短い答えであり、数え切れないほどの時間の後に私の問題を解決した唯一の答えです...ありがとう!
moomoochen 2018年

それが役に立ててうれしい!:)人々がこの答えをより簡単に見つけられるようにする方法があることを望みます。
Venky Soorisetty 2018年

7

今日の時点で、私はを通じて自分の道を取得しようとしました/data/db/mongod.lockのエラー番号:13アクセス許可がすでに?,終端を実行しているのmongodインスタンスで拒否された作成するためのオープン/ロックファイル、およびすべての答えは、上記に掲載しようとしましたこの問題を解決するため、追加しても何も解決しませんでした

sudo chown -R mongodb:mongodb / data / db

現在のユーザー権限をロケーションパスに追加しない限り

sudo chown $ USER / data / db

これが誰かを助けることを願っています。また、私はpiにMongo DBをインストールしました。乾杯!


これが問題の実際の解決策です
Sahil Nagpal

6

同様の問題があり、sudo chownなどを使用して所有者を変更することに関する上記のすべての指示に従いました。変更後も、バックグラウンドで実行されているmongodbのインスタンスがまだありました。ランニング

ps auxw | grep mongo 

正しく閉じられていない、mongoをバックグラウンドで実行している他のタスクを見せてくれました。次に、実行中のすべてのものに対してkillを実行し、サーバーを起動できました。


6

Macユーザーの場合:
実行のls -ld /データ/ DB /
出力のようなものでなければなりませんdrwrx-XR-×20シンホイール680 7月21日午前5時49分/データ/ DB /
どこシンは、所有者があると、車輪は、それが属するグループであります。
ファイル名を指定して実行sudoのchownコマンド-Rシン:デシベルホイール/データ/
ファイル名を指定して実行のmongod


5

私の場合、mongodb.lockファイルを削除しても問題はありませんでした。そうすると、使用中のポートに関するエラーが発生しました:[initandlisten] listen():bind()failed errno:98アドレスはソケットで既に使用されています:0.0.0.0:27017。私はここに別の解決策を見つけました:プロセスを強制終了するための指示でmongodbローカルサーバーを起動できません

  1. monstatbポート(27017)を実行しているプロセスをnetstatから確認します。

    sudo netstat -tulpn | grep :27017

    出力は次のようになります:tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1412 / mongod

  2. 適切なプロセスを強制終了します。

    sudo kill 1412 (1412をステップ1で見つかったプロセスIDに置き換えます)

そして、mongodbを再び正常に起動することができました。私はまだ不適切なシャットダウンから走っていたと思います。


4

タスクマネージャーを使用してWindowsでこのエラーが発生した場合は、実行中の「mongod.exe」のインスタンスを終了してください。それが完了したら、mongo.lockファイルを完全に削除し、mongod.exeを実行します。その後は完全に機能するはずです。


3

私のmongo(3.2.9)はUbuntuにインストールされており、ログファイルには次の行が含まれています。

2016-09-28T11:32:07.821+0100 E STORAGE  [initandlisten] WiredTiger (13) [1475058727:821829][6785:0x7fa9684ecc80], file:WiredTiger.wt, connection: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied 
2016-09-28T11:32:07.822+0100 I -        [initandlisten] Assertion: 28595:13: Permission denied 
2016-09-28T11:32:07.822+0100 I STORAGE  [initandlisten] exception in initAndListen: 28595 13: Permission denied, terminating

2016-09-28T11:32:07.822 + 0100 I CONTROL [initandlisten] dbexit:rc:100

したがって、問題は/ var / lib / mongodbフォルダーの権限にありました。

sudo chown -R mongodb:mongodb /var/lib/mongodb/
sudo chmod -R 755 /var/lib/mongodb
  • サーバーを再起動します

それを修正しましたが、あまりにも安全ではないかもしれませんが(それは私の場合、私自身の開発ボックスです)、dbと認証の両方の変更に少し従いました。


2

Mycase
では、mongodbバージョン2.6.11のデフォルトのデータベースディレクトリは/var/lib/mongodb/

  1. $ sudo chown -R id -u/ var / lib / mongodb /

  2. $ sudo chown -R id -u/var/lib/mongodb/mongod.lock

  3. $ sudo /etc/init.d/mongod stop

  4. $ sudo /etc/init.d/mongod start


`id -u`である必要があります
marcus

2

Windows10にインストールしてからmongodコマンドを実行すると、同じ問題が発生しました。mongodbサービスを停止して、再開しました。魅力のように働く

mongodbサービスを停止するコマンド(Windowsの場合): net stop mongodb

mongodbサーバーを起動するコマンド: mongod --dbpath PATH_TO_DATA_FOLDER


1

Mongo 2.2.4インスタンスがインストールされたFedora 18ではsetenforce 0、ルートとして呼び出してSELinuxを無効にすることで、同様のエラーを回避できました。

ところで、これはAmazon EC2インスタンスではなく企業環境でしたが、症状は似ていました。


1

私の場合、ログファイルを削除することで問題は解決しました。

sudo rm /log/mongod.log

エラーメッセージは特にロックファイルに関するものですが、

exception in initAndListen: 10309 Unable to create/open lock file: 
/data/mongod.lock errno:13 Permission denied 
Is a mongod instance already running?, terminating

これは私を正しい方向に向けました。私のサーバーでは、sudo rm /var/log/mongodb/mongodb.logとsudo rm /tmp/mongodb-27017.sockを実行する必要がありました。
キースジョンハッチソン2016

1

モンゴッドを殺した後、私は同じ問題を抱えていました:モンゴッドを開始できませんでした。

$> sudo kill `pidof mongod`

2015-08-03T05:58:41.339+0000 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongodbtest/replset/data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating

ロックを直接削除した後、mongodプロセスを再起動できます。

$>  rm -rf /data/mongodbtest/replset/data/mongod.lock

1

これは私が問題を修正するためにしたことです:

$ sudo mkdir -p / data / db

$ export PATH = / usr / local / Cellar / mongodb / 3.0.7 / bin:$ PATH

$ sudo chown -R id -u/ data / db

そしてmongoを開始する...

$ mongod


1

私も同じ問題を抱えていました。

以下のコマンドでselinuxのステータスをpermissiveに変更することで解決しました:

setenforce 0

0

ls -la/ var / log / mongodbのユーザーとグループを知ってください。次に、実行しsudo chown -R user:group /data/db ますsudo service mongodb start。ステータスを確認するsudo service mongodb status



0

これらの方法で試すことができます。第一。

sudo chown -R mongod:mongod / data / db

しかし、これが役に立たない場合もあります。2番目。上記の方法が役に立たない場合は、これを試すことができます:

mkdir / data / db#データベースストレージパスとして

nohup mongod --dbpath / data / db&

またはタイプ:

mongod --dbpath / data / db

出力ストリームを取得する


これは古い質問であり、あなたの答えがまだそこにないものを追加しないことを考えると、それが価値があるかどうかあなた自身に尋ねるべきです...
Nic3500

0

CentOS 6.xの場合:

sudo chown -R mongodb:mongodb <db-path> sudo service mongod restart

でカスタムを設定しdb-pathました/etc/mongod.conf




0

同様のすべてのレコードを削除すると、固定誤差、(私の場合のディレクトリに入ったjournals、とファイルをmongo.lock...持つことを確認してくださいポートの後、)sudo lsof -i:27017なめらかはそれで実行している場合、kill <PID of the process>および実行しようと./mongod再び


-2

修正: sudo mongod

同じ問題があり、sudo権限でmongodを実行すると修正されました。Windows環境から来て、私はちょうど使用しましたmongodデーモンを起動するましたが、/ data / dbにアクセスするにはスーパーユーザー権限が必要なようです。

root以外のユーザーに、そのパスへの読み取りおよび書き込み権限を与えることもできます。上記の回答でガイドを確認してください!


ルートとしてmongodを実行する必要はなく、システムがエクスプロイトに対して脆弱になる可能性があります
qbert220

-2

mongodを起動しようとするたびに、

sudo mongod

または永続的にこれを修正したい場合は、/ data / dbフォルダーにrwx権限を付与してみてください

 chmod +rwx data/

これらはどちらも良い考えではありません。1つ目は、システムをセキュリティ攻撃に対して脆弱にする可能性があります。2番目の方法では、権限のないユーザーがmongoデータベースを改ざんできる可能性があります
qbert220
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.