[macos] Mongod는 / data / db 폴더가 없다고 불평합니다

오늘 처음으로 새 Mac을 사용하고 있습니다. mongodb.org에서 시작 안내서를 따라 / data / db 디렉토리를 만드는 단계까지 진행 중입니다. btw, 나는 homebrew 노선을 사용했다.

터미널을 열면 “ls”를 수행 할 때 데스크탑 응용 프로그램 영화 음악 그림 문서 및 라이브러리의 폴더가 표시되므로 홈 디렉토리라고 부르는 것 같습니다.

그래서 나는

mkdir -p /data/db

먼저 권한이 거부되었다고합니다. 나는 30 분 동안 다른 것들을 계속 시도했고 마침내 :

mkdir -p data/db

일했다. 그리고 내가 “ls”일 때, 데이터의 디렉토리와 그 안에 중첩 된 db 폴더가 있습니다.

그런 다음 mongod를 시작하고 데이터 / db를 찾지 못하는 것에 대해 불평합니다.

내가 잘못 했어?

이제 나는

sudo mkdir -p /data/db

그리고 “ls”를 수행하면 데이터 디렉토리와 db 디렉토리가 나타납니다. db dir 내부에는 절대 아무것도 없으며 지금 mongod를 실행할 때

Sun Oct 30 19:35:19 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Sun Oct 30 19:35:19 dbexit:
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close listening sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to flush diaglog...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: waiting for fs preallocator...
Sun Oct 30 19:35:19 [initandlisten] shutdown: lock for final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: closing all files...
Sun Oct 30 19:35:19 [initandlisten] closeAllFiles() finished
Sun Oct 30 19:35:19 [initandlisten] shutdown: removing fs lock...
Sun Oct 30 19:35:19 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Sun Oct 30 19:35:19 dbexit: really exiting now

에 대한 오류 메시지가 표시됩니다.

sudo chown mongod:mongod /data/db

chown: mongod: Invalid argument

고마워요!



답변

잘못된 위치에 디렉토리를 작성했습니다

/ data / db는 ‘/’루트 디렉토리 바로 아래에있는 반면 ‘/ root’홈 디렉토리와 같은 다른 디렉토리에 ‘data / db'(앞에 /가없는)를 만들었 음을 의미합니다.

이 디렉토리를 루트로 작성해야합니다

예를 들어을 사용해야합니다 sudo.sudo mkdir -p /data/db

또는 su -수퍼 유저가 되어야합니다.mkdir -p /data/db


노트 :

MongoDB에는 다른 위치에 데이터 디렉토리를 만들 수있는 옵션이 있지만 항상 db-path를 수동으로 지정해야하기 때문에 DB 복구와 같은 작업이 약간 복잡하기 때문에 일반적으로 좋은 생각이 아닙니다. 나는 그렇게하지 않는 것이 좋습니다.


편집하다:

오류 메시지는 “잠금 파일을 만들거나 열 수 없습니다 : /data/db/mongod.lock errno : 13 권한이 거부되었습니다.”입니다. 입니다. 생성 한 디렉토리에 올바른 권한과 소유권이없는 것 같습니다. MongoDB 프로세스를 실행하는 사용자가 쓸 수 있어야합니다.

‘/ data / db /’디렉토리의 권한 및 소유권을 보려면 다음을 수행하십시오. (권한 및 소유권은 다음과 같습니다.)

$ ls -ld /data/db/
drwxr-xr-x 4 mongod mongod 4096 Oct 26 10:31 /data/db/

왼쪽 ‘drwxr-xr-x’에는 사용자, 그룹 및 기타에 대한 권한이 표시됩니다. ‘mongod mongod’는 디렉토리를 소유 한 사람과 해당 디렉토리가 속한 그룹을 보여줍니다. 이 경우 둘 다 ‘mongod’라고합니다.

‘/ data / db’디렉토리에 위의 권한과 소유권이없는 경우 다음을 수행하십시오. .

먼저 몽고 사용자가 가진 사용자 및 그룹을 확인하십시오.

# grep mongo /etc/passwd
mongod:x:498:496:mongod:/var/lib/mongo:/bin/false

/ god / passwd에 mongod에 대한 항목이 있어야합니다. 데몬이기 때문입니다.

sudo chmod 0755 /data/db
sudo chown -R 498:496 /data/db    # using the user-id , group-id

다음과 같이 user-name 및 group-name을 사용할 수도 있습니다 (/ etc / passwd 및 / etc / group에 있음).

sudo chown -R mongod:mongod /data/db 

그것이 작동하게해야합니다 ..

아래 의견에서 일부 사람들은 이것을 사용했습니다.

sudo chown -R `id -u` /data/db
sudo chmod -R go+w /data/db

또는

sudo chown -R $USER /data/db
sudo chmod -R go+w /data/db

단점은 $ USER가 로그인 쉘이있는 계정이라는 것입니다. 데몬은 이상적으로 보안상의 이유로 쉘을 가지고 있지 않아야하므로 위의 비밀번호 파일 grep에 / bin / false가 표시됩니다.

디렉토리 권한의 의미를 더 잘 이해하려면 여기를 확인하십시오.

http://www.perlfect.com/articles/chmod.shtml

Google을 통해 찾을 수있는 자습서 중 하나 인 “UNIX for 초보자”도 확인할 수 있습니다.


답변

Nik과 같은 오류가 발생한 후

chown : id -u : 유효하지 않은 인수

나는 이것이 분명히 (있었어야 인용 부호의 잘못된 유형을 사용에서 발생 발견 역 인용 부호 ) 우분투 포럼

대신 방금 사용했습니다

sudo chown $ USER / data / db

대안으로 이제 mongod는 필요한 권한을 갖습니다.


답변

이것은 의견에서 발견됩니다.

sudo chown -R $USER /data/db


답변

폴더를 작성하십시오.

sudo mkdir -p /data/db/

자신에게 폴더에 대한 권한을 부여하십시오.

sudo chown `id -u` /data/db

그런 다음 mongod없이 실행할 수 있습니다 sudo. OSX Yosemite에서 작동


답변

OS X에서 해당 오류를 해결하기 위해 서비스를 다시 시작하고 중지했습니다.

$ brew services restart mongodb
$ brew services stop mongodb

그런 다음 나는 달렸다 mongod --config /usr/local/etc/mongod.conf 문제는 사라졌습니다.

mongodb homebrew 패키지를 업그레이드 한 후 오류가 발생했습니다.


답변

YOUR_USER_NAME 님과 직원 이 그룹 인 Mac에서 brew를 통해 설치

sudo mkdir -p /data/db
sudo chmod +x+r+w /data/db/
sudo touch /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db
sudo chmod +x+r+w /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db/mongod.lock


답변

인수없이 mongo를 실행하면 프로덕션 시스템에서 실행중인 것으로 가정하여 기본 위치를 사용합니다.

자신의 데이터베이스 (dev 또는 다른 데이터베이스)를 사용하는 경우 :

./bin/mongod --dbpath ~/data/db