Không thể tạo / mở tệp khóa: /data/mongod.lock errno: 13 Quyền bị từ chối


187

Làm cách nào để tôi có được mongo sử dụng ổ gắn trên ec2? Tôi thật sự không hiểu. Tôi đã đính kèm một ổ đĩa trên ec2 định dạng ổ đĩa là root và bắt đầu với quyền root và khi root tôi không thể truy cập? Tôi đang chạy trên Ubuntu 12.04. Không có mongo khác đang chạy

Tôi thấy rằng mongo đã tạo một thư mục 'db' trong / data tức là / 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

Dưới đây là nếu tôi khởi động lại khi tôi xóa một tệp khóa ....

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
Có vẻ như mongod đã tắt rất nhiều lần trước khi nó chạy và không thể dọn sạch tệp mongod.lock mà nó đã tạo. Tệp này tồn tại để ngăn nhiều trường hợp mongod hoạt động trên tệp. Nếu bạn xóa tệp và thử chạy lại mongod, bạn sẽ không gặp vấn đề gì
ACE

2
Xem câu hỏi cập nhật. Vấn đề tương tự nếu xóa tệp khóa
Tampa

Có vẻ như vẫn còn là một vấn đề với lockfile, các quyền trên thư mục mà lockfile đang ở là gì? TBH Tôi chỉ thấy điều này trong 2 trường hợp: 1) lockfile đã tồn tại và 2) mongod không có quyền để tạo lockfile ở vị trí mong muốn.
ACE

1
Bạn nên đảm bảo rằng người dùng mongo có quyền truy cập chown mongodb:mongodb on /var/lib/monogdb, cũng trên thư mục dữ liệu.
Hans N. Hjort

Câu trả lời:


117

Tôi đã gặp vấn đề tương tự trên một ví dụ Ubuntu ec2. Tôi đã theo dõi bài viết này trên trang 7:

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

Đường dẫn Mongodb /etc/mongodb.confđược đặt thành /var/lib/mongodb(vị trí cài đặt chính và hoạt động). Khi tôi thay đổi thành /data/db(âm lượng EBS), tôi đã nhận được 'errno: 13 Quyền bị từ chối'.

  1. Đầu tiên tôi chạy sudo service mongodb stop.
  2. Sau đó, tôi thường ls -laxem mongodb của nhóm và chủ sở hữu được gán cho /var/lib/mongodb(đường dẫn hiện tại) và tôi đã thay đổi /data/db(đường dẫn mới) với chownchgrpkhớp. (ví dụ sudo chown -R mongodb:mongodb /data/db:)
  3. Sau đó, tôi cập nhật đường dẫn etc/mongodb.confđến /data/dbvà xóa các tập tin mongo cũ trong /var/lib/mongodbthư mục.
  4. Sau đó tôi chạy sudo service mongodb startvà đợi khoảng một phút. Nếu bạn cố gắng kết nối với 27017 ngay lập tức, bạn sẽ không thể.
  5. Sau một phút kiểm tra /data/db(âm lượng EBS) và mongo nên đặt một tạp chí, mongod.lock, local.ns, local.0, v.v. Nếu không hãy thử sudo service mongodb restartvà kiểm tra một phút sau.

Tôi chỉ dành hơn một giờ với điều này. Thay đổi nhóm và xóa các tệp cũ có thể không cần thiết, nhưng đó là những gì làm việc cho tôi.

Đây là một video tuyệt vời về việc gắn âm lượng ebs vào ví dụ ec2:

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


8
Tôi đã đấu tranh với vấn đề này và nhận ra rằng nếu bạn liệt kê bạn liệt kê thư mục đích của bạn với ls -lahZ, nó sẽ cung cấp cho bạn bối cảnh bảo mật, bối cảnh cho thư mục dữ liệu mongo nên được đặt như: "sudo chcon -R -u system_u -t mongod_var_lib_t / thư mục / dữ liệu "này bên cạnh các quyền rõ ràng và kết hợp người dùng: nhóm. Hy vọng nó giúp.
jmdiego

478

Tôi sử dụng phương pháp này để giải quyết vấn đề:

sudo chown -R mongodb:mongodb /data/db

8
Thêm một -Rtùy chọn và nó hoàn hảo :)
Adrien

7
đó là: sudo chown -R id -u/ data / db cho người không quen. :)
rncrtr

8
Hóa ra có một vấn đề với backticks. Hãy thử chạy sudo chown $USER /data/dbthay vì lệnh ban đầu.
Paymahn Moghadasian

7
Đây thực sự là câu trả lời chính xác. @Tampa bạn nên chấp nhận câu trả lời này. btw - bạn không cần id -Uhoặc $USERcông cụ. mongo có người dùng / nhóm riêng của mình. bạn có thể và nên cứng mã mongodb: mongodb. Vì vậy, lệnh chỉ đơn giản làsudo chown -R mognodb:mognodb /data/db
anh chàng mograbi

11
Điều này thực sự làm gì? Nó hoạt động, nhưng rất muốn hiểu :)
zero_cool

81

Trong trường hợp của tôi (ví dụ AWS EC2, Ubuntu) đã giúp:

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

Và sau đó mọi thứ hoạt động tốt.


6
Đây là câu trả lời tốt nhất, rất có thể là vấn đề về quyền với người dùng đang chạy mongod
davo

2
Vâng, đây là câu trả lời hay nhất
Vegan Sv

1
Chúng tôi đang thay đổi / chuyển quyền sở hữu /data/dbchoUSERNAME
Saif

52

Bạn chỉ cần cấp quyền truy cập vào /data/dbthư mục của bạn .

Nhập sudo chown -R <USERNAME> /data/db, thay thế <USERNAME>bằng tên người dùng của bạn.

Bạn có thể tìm tên người dùng của bạn bằng cách gõ whoami.



10

Tôi gặp vấn đề tương tự, lý do thực tế là đã có phiên mongod chạy từ nỗ lực trước đó của tôi.

Tôi đã chạy

killall mongod

và mọi thứ khác chạy đúng như mong đợi.

killalllệnh sẽ gửi tín hiệu HẠN cho tất cả các quy trình bằng UID thực. Vì vậy, điều này giết chết tất cả các phiên bản đang chạy của mongod để bạn có thể bắt đầu cuộc sống của riêng mình.


Đây thực sự là câu trả lời ngắn nhất và là câu trả lời duy nhất giải quyết vấn đề của tôi sau vô số giờ ... cảm ơn!
moomoochen

Vui vì nó đã giúp! :) Mong muốn có cách giúp mọi người tìm thấy câu trả lời này dễ dàng hơn.
Venky Soorisetty

7

Kể từ hôm nay, tôi đã cố gắng tìm cách tạo / mở tệp khóa: /data/db/mongod.lock errno: 13 Quyền bị từ chối Là một phiên bản mongod đã chạy?, Chấm dứt và thử tất cả câu trả lời được đăng ở trên để giải quyết vấn đề này, do đó không có gì làm việc bằng cách thêm

sudo chown -R mongodb: mongodb / data / db

Trừ khi tôi đã thêm quyền người dùng hiện tại của mình vào đường dẫn vị trí

sudo chown $ USER / dữ liệu / db

Hy vọng điều này sẽ giúp được ai đó. Ngoài ra tôi chỉ cần cài đặt Mongo DB trên pi của tôi. Chúc mừng!


Đây là giải pháp thực tế cho vấn đề
Sahil Nagpal

6

Tôi đã có một vấn đề tương tự và làm theo tất cả các hướng dẫn ở trên về việc thay đổi chủ sở hữu bằng cách sử dụng sudo chown, v.v. Tôi vẫn có một trường hợp mongodb chạy trong nền sau khi thay đổi. Đang chạy

ps auxw | grep mongo 

chỉ cho tôi các tác vụ khác bằng cách sử dụng mongo chạy trong nền không được đóng đúng cách. Sau đó tôi chạy kill tất cả những cái đang chạy và sau đó có thể khởi động máy chủ của tôi.


6

Đối với người dùng mac:
Chạy ls -ld / data / db /
Đầu ra phải giống như drwrx-xr-x 20 singh wheel 680 21 tháng 7 05:49 / data / db /
Trong đó singh là chủ sở hữu và bánh xe là nhóm thuộc về nó .
Chạy sudo chown -R singh: wheel / data / db
Chạy mongod


5

Xóa tệp mongodb.lock không phải là vấn đề trong trường hợp của tôi. Tôi đã làm như vậy và gặp lỗi về cổng đang được sử dụng: [initandlisten] nghe (): bind () fail errno: 98 Địa chỉ đã được sử dụng cho socket: 0.0.0.0:27017. Tôi tìm thấy một giải pháp khác ở đây: không thể khởi động máy chủ cục bộ mongodb với các hướng dẫn để hủy tiến trình:

  1. Tìm hiểu từ netstat quá trình nào đang chạy cổng mongodb (27017)

    sudo netstat -tulpn | grep :27017

    Đầu ra sẽ là: tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1412 / mongod

  2. Giết quá trình thích hợp.

    sudo kill 1412 (thay thế 1412 bằng ID tiến trình của bạn được tìm thấy trong bước 1)

Và tôi đã có thể bắt đầu thành công mongodb một lần nữa. Tôi tin rằng tôi vẫn đang chạy từ một tắt máy không đúng cách.


4

Đối với những bạn gặp lỗi này trên Windows bằng Trình quản lý tác vụ, hãy kết thúc trường hợp "mongod.exe" đang chạy. Khi đã xong, xóa tệp mongo.lock và chạy mongod.exe. Nó sẽ hoạt động hoàn hảo sau đó.


3

Mongo của tôi (3.2.9) đã được cài đặt trên Ubuntu và tệp nhật ký của tôi có các dòng sau:

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 TÔI KIỂM SOÁT [initandlisten] dbexit: rc: 100

Vì vậy, vấn đề là ở quyền trên thư mục / var / lib / mongodb.

sudo chown -R mongodb:mongodb /var/lib/mongodb/
sudo chmod -R 755 /var/lib/mongodb
  • Khởi động lại máy chủ

Đã sửa nó, mặc dù tôi nhận ra rằng có thể không quá an toàn (đó là hộp dev của riêng tôi trong trường hợp của tôi), bit sau khi thay đổi cả db và xác thực đã hoạt động.


2

Trong Mycase
Trong thư mục databse phiên bản 2.6.11 mặc định là/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


nên là `id -u`
marcus

2

Tôi gặp vấn đề tương tự khi chạy lệnh mongod sau khi cài đặt nó trên Windows10. Tôi đã dừng dịch vụ mongodb và bắt đầu lại. Làm việc như một cơ duyên

Lệnh dừng dịch vụ mongodb (trong windows): net stop mongodb

Lệnh khởi động máy chủ mongodb: mongod --dbpath PATH_TO_DATA_FOLDER


1

Trên phiên bản Fedora 18 với Mongo 2.2.4, tôi có thể khắc phục một lỗi tương tự bằng cách vô hiệu hóa SELinux bằng cách gọi setenforce 0 là root.

BTW, đây là một môi trường doanh nghiệp, không phải là phiên bản Amazon EC2, nhưng các triệu chứng tương tự nhau.


1

Trong trường hợp của tôi, vấn đề đã được giải quyết bằng cách xóa tệp nhật ký .

sudo rm /log/mongod.log

Mặc dù thông báo lỗi đề cập cụ thể đến tệp khóa :

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

Điều này chỉ cho tôi đi đúng hướng. Trên máy chủ của tôi, tôi phải thực hiện sudo rm /var/log/mongodb/mongodb.log và sudo rm /tmp/mongodb-27017.sock.
Keith John Hutchison

1

Sau khi tôi giết mongod, tôi cũng gặp vấn đề tương tự: không thể bắt đầu mongod.

$> 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

Sau khi tôi xóa khóa trực tiếp, tôi có thể khởi động lại quá trình mongod.

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

1

Đây là những gì tôi đã làm để khắc phục vấn đề:

$ sudo mkdir -p / data / db

$ xuất PATH = / usr / local / Cellar / mongodb / 3.0.7 / bin: $ PATH

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

và sau đó để bắt đầu mongo ...

$ mongod


1

Tôi đã từng gặp vấn đề tương tự.

Tôi đã giải quyết nó bằng cách thay đổi trạng thái selinux thành cho phép bằng lệnh bên dưới:

setenforce 0

0

Phải ls -labiết người dùng và nhóm / var / log / mongodb. Sau đó làm sudo chown -R user:group /data/db ngay bây giờ chạy sudo service mongodb start. Kiểm tra trạng thái vớisudo service mongodb status


0

Trên cửa sổ hãy chắc chắn rằng bàn điều khiển được khởi động như aministrator


0

Bạn có thể thử bằng những cách này. 1

sudo chown -R mongod: mongod / data / db

nhưng đôi khi, điều này không hữu ích. lần 2. nếu cách trên không hữu ích, bạn có thể thử làm điều này:

mkdir / data / db #as đường dẫn lưu trữ cơ sở dữ liệu

nohup mongod --dbpath / data / db &

hoặc gõ:

mongod --dbpath / data / db

để có được luồng đầu ra


Xem xét đây là một câu hỏi cũ và câu trả lời của bạn không thêm bất cứ điều gì chưa có, bạn nên tự hỏi mình xem nó có giá trị không ...
Nic3500

0

Đối với tôi trên CentOS 6.x:

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

Và tôi đã thiết lập một tùy chỉnh db-pathtrong /etc/mongod.conf.



0

Trong máy chủ Centos

cái này hiệu quả với tôi

chown -R mongod:mongod /var/lib/mongo

0

Có một lỗi tương tự, được sửa bằng cách xóa tất cả các bản ghi (trong thư mục trường hợp journalsvà tệp của tôi mongo.lock...), sau đó kiểm tra cổng với sudo lsof -i:27017, nếu smth chạy trên nó kill <PID of the process>và thử chạy ./mongodlại


-2

Sửa chữa: sudo mongod

Tôi đã có cùng một vấn đề, chạy mongod với đặc quyền sudo đã sửa nó. Đến từ môi trường windows, tôi chỉ sử dụngmongod để khởi động trình nền, có vẻ như chúng ta cần các đặc quyền siêu người dùng để truy cập / data / db.

Bạn cũng có thể cấp cho người dùng không phải quyền đọc và ghi đối với đường dẫn đó. kiểm tra câu trả lời ở trên để được hướng dẫn!


Chạy mongod với quyền root là không cần thiết và có thể khiến hệ thống dễ bị khai thác hơn
qbert220

-2

Mỗi khi bạn cố gắng bắt đầu mongod chỉ cần gõ

sudo mongod

hoặc nếu muốn khắc phục vĩnh viễn, chỉ cần thử cung cấp cho rwx tiền đề vào thư mục / data / db

 chmod +rwx data/

Đây không phải là một ý tưởng tốt. Việc đầu tiên có thể làm cho hệ thống dễ bị tổn thương hơn khi khai thác bảo mật. Thứ hai có thể cho phép người dùng không có đặc quyền giả mạo cơ sở dữ liệu mongo của bạn
qbert220
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.