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


474

오늘 처음으로 새 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

고마워요!


1
"잘못된 인수"는 시스템에서 mongo 사용자의 기호 이름이 다르다는 것을 의미합니다. 아마도 MongoDB를 설치하기 위해 다른 패키지 또는 설치 메커니즘을 사용하고있을 것입니다. mongo 사용자의 기호 이름 (또는 uid / gid)에 대해 / etc / passwd 및 / etc / group 파일을 확인해야합니다 grep mongo /etc/passwd /etc/group. 그래도 작동하지 않으면 디렉토리의 소유자를 확인하여 이름을 확인하십시오 ls -ld /var/lib/mongo. 또는 uid / gid를 보려면 다음을 수행하십시오 ls -lnd /var/lib/mongo. 제 경우에는 drwxr-xr-x. 6 *487 480* 4096 Sep 20 2011 ...이것은 487 : 480을 매개 변수로 사용한다는 것을 의미합니다
Tilo

UID / GID 사용은 기호 이름 사용과 동의어입니다. 예를 들어 'mongod : mongod를 위의 방법으로 찾은 uid / gid 숫자로 바꾸십시오.
Tilo

이제이 디렉토리 (data / db)를 올바르게 추가하는 방법을 알았으므로, 왜이 디렉토리가 설치에 포함되지 않았습니까?
winux

: 당신은 맥 OS 10.15,이 응답 힘 도움말을 업그레이드 한 경우 stackoverflow.com/questions/58283257/...
아담 Zerner

최신 버전의 MAC이있는 경우 : 새로운 macOS Catalina 업데이트에서는 "/ data / db"폴더가 읽기 전용이되어 수정할 수 없습니다. 이 절차에 따라 다른 폴더에 DB를 생성하십시오. 1) mongod 디렉토리 변경 : sudo mongod --dbpath / System / Volumes / Data / data / db 2) 별명을 지정하십시오. alias mongod = "sudo mongod --dbpath / System / Volumes / Data / data / db "
Farbod Aprin

답변:


636

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

/ 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 초보자"도 확인할 수 있습니다.


2
시도 ls -ld /data/ 하고 ls -ld /data/db/.. 왼쪽에 디렉토리 권한, 소유권, 디렉토리 이름이 표시됩니다. MongoDB를 실행하는 user-id가 디렉토리를 쓸 수 있는지 확인해야합니다.

2
@ Tilo 네, 내가 해냈습니다. 첫 번째, chmod는 괜찮 았고 두 번째는 "chown : mongod : Invalid argument"라고 말합니다
Nik So

3
이것은 전체 스레드가 내가 겪고있는 것입니다. 그러나 mongo의 사용자 ID 및 그룹 ID가 내 시스템에 무엇인지 이해하지 못하고 어디서나 문서를 찾을 수 없습니다. 나는 chown mongod : mongod 부분에 돌아온다invalid arguement
Trip

10
업데이트 나는 갔다 sudo touch /data/db/mongod.locksudo chmod 0777 /data/db/mongd.lock. 그녀는 바로 시작했다.
트립

141
달리기 sudo chown -R `id -u` /data/db또는 달리 sudo chown -R $USER /data/db대신 sudo chown mongod:mongod /data/db나를 위해 속임수
heitortsergent

117

Nik과 같은 오류가 발생한 후

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

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

대신 방금 사용했습니다

sudo chown $ USER / data / db

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


4
누군가가 유용하다고 생각하면 : 나는 같은 문제가 있었지만 오류 메시지가 약간 달랐습니다 (chown mongod : mongod를 시도했을 때 'mongod'그룹이 존재하지 않는다고 말함)-> chown $ USER 사용 나, 감사합니다 ...
trainoasis

6
이것에 -R을 추가해야했습니다. "sudo chown -R $ USER / data / db"
Kevin

1
초보자를위한 완벽한 답변
Pyae Sone

90

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

sudo chown -R $USER /data/db

2
또한 나를 위해. 내 OSX에 homebrew를 통해 mongo를 설치해도 mongod 사용자 및 그룹이 추가되지 않습니다.
Zauker

73

폴더를 작성하십시오.

sudo mkdir -p /data/db/

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

sudo chown `id -u` /data/db

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


1
새 디렉토리를 만드는 대신 mongod 서비스를 다시 시작하십시오. 예 : 서비스 mongod 재시작
Devendra Bhat

bogdanmac:~ iliebogdanbarbulescu$ sudo chown `id -u` /data/db chown: /data/db: No such file or directory
bibscy

32

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

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

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


23

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

@MarkusWMahlberg 감사합니다. 이상하게 느껴지지만 효과가 있었던 것들 중 하나입니다. 누가 그 파일의 소유자와 그룹이어야합니까?
Gal Bracha

배포판에 따라 다릅니다. /etc/passwd사용자 이름을 살펴보십시오 . 그룹이 동일 할 수 있습니다. 일반적으로 mongo또는 mongodb입니다.
Markus W Mahlberg

@MarkusWMahlberg ok-이제 고쳤습니다. brew를 통해 설치할 때 사용자와 그룹을 만들지 않으므로 내 사용자 이름으로 설정했습니다. 더 안전한지 확인하십시오. 감사합니다
Gal Bracha

감사. brew를 사용하여 mac에서 개발할 때 문제가 해결됩니다. mongodb에서 테스트 데이터를 사용하는 경우 더 많은 보안이 필요하지 않습니다. OS X의 @MarkusWMahlberg에서 mongod를 실행하는 사용자는 "mongod &"로 시작하면 YOUR_USER_NAME입니다.
gaspard

22

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

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

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

이것이 /etc/mongod.conf에 선언 된 설정을 사용하지 않는 이유를 설명합니까? 우분투 16.04에 3.6.5 설치와 관련된 문제가 있습니다.
다크 스타 1

verbose (-v) 모드에서 시작하거나 명시 적 강제로 구성 (--config)을 시도하십시오 . docs.mongodb.com/manual/reference/program/mongod apt-get을 사용하여 설치하는 경우 mongod 상태 / 시작 서비스로 시작하십시오. / stop
loreii 2016 년

나는 몽고 통나무를 조사했다. / data / db 디렉토리가 없기 때문에 시작을 방해한다는 말이 계속되었습니다. 결국 귀하의 답변을 발견했는데 이것이 문제의 이유 인 것 같습니다.
다크 스타 1

이는 fs 루트에서 실제로 / data / db를 작성할 수없는 Windows의 Linux-Subsystem에서 MongoDB를 사용할 때도 작동합니다.
hiergiltdiestfu

8

기존 Mongodb 설정 에서이 문제가 발생했습니다. 왜 그런 일이 일어 났는지 확실하지 않지만 어떤 이유로 Mongod 프로세스가 mongod.config 파일을 찾을 수 없습니다. 구성 파일을 찾을 수 없으므로 존재하지 않는 폴더 인 / data / db에서 DB 파일을 찾으려고했습니다. 그러나 구성 파일은 여전히 ​​사용 가능하므로 프로세스에 구성 파일에 대한 권한이 있는지 확인하고 다음과 같이 --config 플래그를 사용하여 mongod 프로세스를 실행하십시오.

mongod --config /etc/mongod.conf

구성 파일 자체 에서이 설정을했습니다.

storage:
  dbPath: /var/lib/mongodb

그리고 이것이 프로세스가 실제 DB 폴더를 다시 찾을 수있는 방법입니다.


1
나는 그것이 나에게 일어난 것을 확인합니다. 설정 파일 대신 --dbpath = / var / lib / mongodb를 설정하면됩니다. 나는 모든 데이터를 잃어 버렸지 만 여전히 거기에 있습니다.
lenhhoxung

8

내가 했어

brew install mongodb

2018-02-01에 저에게 줬습니다. mongodb 버전 3.6.2를 제공했습니다.

위의 orluke답변 에 따라 프롬프트를 보았습니다.

$ brew services restart mongodb

모든 것이 삶에 생겨났습니다. 내 mongoose.createConnection()전화는 내가 원하는 것을했다. GUI MongoDB를 나침반 , 커뮤니티 버전은 연결하는 것입니다. 나는 나침반을 사용하여 local.startup_log컬렉션 을 보았습니다 . 그 문서에는 mongoDB 서비스를 시작한 로그가 하나 있습니다.

cmdLine:Object
    config:"/usr/local/etc/mongod.conf"

실제로 그러한 파일이있었습니다.

$ more /usr/local/etc/mongod.conf
systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /usr/local/var/mongodb
net:
  bindIp: 127.0.0.1

/usr/local/var/mongodb불분명 한 파일이 많은 디렉토리 가있었습니다 . 이것이 설치가 지금 작동하는 방식 인 것 같습니다.

brew services restart로그인시 서비스가 실행되도록 설정되어 있는지 확실하지 않습니다 . 그래서 나는

brew services stop mongodb
brew services start mongodb

재부팅 후 다시 시작되기를 바랍니다. 그리고 실제로 그랬습니다. 사실, 초기 설치 후해야 할 일은 다음과 같습니다.

brew services start mongodb

서비스가 시작되고 재부팅 후에 다시 시작됩니다.



7

명령이 컴퓨터의 루트 디렉토리가 아닌 현재 폴더에 디렉토리 구조를 만들었을 것 /입니다.

첫 번째 명령은 옳았지만 /보호 된 디렉토리 인에 폴더를 만들려고하기 때문에 sudo"superuser do"의 약어 인 접두사를 접두어로 사용해야합니다 . 그러면 비밀번호를 묻는 메시지가 나타납니다.

따라서 전체 명령은 다음과 같습니다.

$ sudo mkdir -p /data/db

6

/ data / db ...는 루트 (예 : / ) 에 / data / 라는 디렉토리 와 / db / 라는 하위 폴더 를 만들어야 합니다 .

sudo 를 사용해야하므로 권한 오류가 발생합니다.MacOS의 루트 디렉토리에 를 사용하여 디렉토리를 생성 명령을 실행할 수 있습니다.

대신 이것을 실행하십시오 ...

$ sudo mkdir -p /data/db

암호를 입력하라는 메시지가 표시되며, 시스템 설정을 변경하는 데 사용하는 암호와 동일합니다 (ecample에 대한 시스템 환경 설정에서 항목을 변경하려고 할 때 열리는 작은 대화 상자). 로그인 할 때와 동일합니다.


6

루트 액세스 권한이없는 디렉토리를 작성하려고합니다.

mongodb를 테스트하기 위해 다음과 같이 사용자 디렉토리의 디렉토리를 사용합니다.

cd
mkdir -p temp/
mongod --dbpath .

이것은 현재 작업 디렉토리에서 temp /에 mongo 데이터베이스를 만듭니다.


6

창 관리자로 / data / db 폴더를 만들어서 이와 동일한 문제를 극복했습니다. 처음에는 터미널을 통해 시도했지만 루트 디렉토리에 폴더를 만들려면 sudo를 사용해야했습니다.

방금 Finder를 사용하여 루트 디렉토리로 가서 'New Folder'를 사용하여 새 폴더를 만들었습니다. 완전히 나를 위해 일했습니다.

참고 : OSX를 사용하고 있습니다.


5

간단한 참고 사항 :

권한을 먼저 변경하지 않고 mongod를 실행하려고 시도한 경우 / data / db 디렉토리에 mongod.lock 파일 (및 기타 파일)이있을 수 있습니다. / data / db 디렉토리의 권한을 변경하여 $ USER에게 액세스 권한을 부여한 후에도 "잠금 파일을 작성 / 열 수 없습니다. /data/db/mongod.lock errno : 13 권한이 거부되었습니다." "오류. ls -al / data / db를 실행하면 개별 파일에 대한 권한이 여전히 $ USER가 아니라 사용자의 root로 설정되어 있음을 알 수 있습니다. mongod.lock 파일 및 기타 파일도 제거해야합니다. 그런 다음 mongod를 다시 실행하면 모든 것이 작동하고 ls -al을 다시 실행하여 파일 권한이 디렉토리 권한과 일치하는지 확인할 수 있습니다.


이것은 좋은 메모입니다. 잠금 파일이 없지만 데이터 및 DB 폴더의 소유자를 변경해야했습니다.
Caranicas

5

루트에 디렉토리를 만듭니다

sudo mkdir -p /data/db

이제 소유자를 변경하십시오

sudo chown -R $USER /data

잘가요!

mongod

대신에 sudo mongod모든 비밀번호를 입력 할 필요는 없지만 실제 프로젝트에서는을 사용해야합니다 sudo mongod. 일반 사용자에게 권한을 부여하지 마십시오.


4

mongodb를 시작하려고 할 때 다음과 같은 오류가 계속 발생했습니다.

"shutting down with code:100" 

나는 다음 명령을 사용하고 있었다 :

./mongod --dbpath=~/mongo-data

나를위한 해결책은 "="기호가 필요하지 않아서 오류가 발생했다는 것입니다. 그래서 나는

./mongod --dbpath ~/mongo-data

오류가 결코 이것이 문제라고 지정하지 않기 때문에 이것을 버리고 싶었습니다. ~ / mongo-data 디렉토리의 내용을 거의 제거하여 그것이 도움이되는지 확인했습니다. 나는 cli args가 때때로 "="부호를 사용하지 않는다는 것을 기억했다.


3

이 날짜까지 나는 mongod 명령을 시작하기 위해 / data / db 폴더를 만들어야한다고 생각했습니다.

그러나 최근에 service 명령으로 mongod를 시작하려고 시도했지만 저에게 효과적이며 / data / db 디렉토리를 만들 필요가 없었습니다.

service mongod start

mongod의 상태를 확인하려면 다음 명령을 실행할 수 있습니다.

service mongod status

3

이 솔루션은 내 문제를 해결합니다

  1. 디렉토리를 다음과 같이 만드십시오.

    sudo mkdir -p / data / db

  2. 그러면 db라는 이름의 디렉토리가 만들어지고 명령으로 시작하려고합니다.

    스도 몬

mongod를 시작할 때 다른 오류나 문제가 발생하면 다음과 같은 문제가 발생할 수 있습니다.

리스너를 설정하지 못했습니다 : SocketException : 이미 사용중인 주소 터미널에 다음과 같이 입력하여 mongod의 실행중인 프로세스를 종료해야합니다.

ps ax | grep mongod
sudo kill ps_number

mongod running port를 찾아 프로세스를 종료하십시오. 또 다른 방법은 mongod를 시작할 때 특정 포트를 만드는 것입니다.

sudo mongod --port 27018

2

제공 할 수있는 사용 가능한 사용자 ID를 보려면 터미널에 "id"를 입력 한 다음 간단히 입력하십시오.

"sudo chown -R idname / data / db"

이것은 나를 위해 일했다! 이것이 문제를 해결하기를 바랍니다.


2

더 최신 버전의 MongoDB에는 3.2.10이 있으며 기본값은

/var/lib/mongodb


1
mongod --dbpath /var/lib/mongodb이러한 상황에서 실행 도움
santiago arizti

1

도구 패키지를 (다시) 설치 한 후 Windows 10 장치에서 비슷한 오류가 발생했습니다.

initAndListen에서 예외 : NonExistentPath : 데이터 디렉토리 C : \ data \ db \를 찾을 수 없습니다., 종료

솔루션 리눅스 시스템에서 설명한 것과 유사하다 : 단순히 폴더를 만드는 것만으로도 mongod.exe(mongoDB 서버) 를 시작할 수 있습니다 .

Windows 장치에서 동일한 검색어로 여기에 오는 사람들에게 남겨 둘 수 있다고 생각했습니다.



0

내가 개척 한이 문제를 만드는 정말 바보 같은 방법이 있습니다.

1) 몽고 설치를 잠시 동안 그대로 두십시오 .2) 돌아와 서버가 실행 중이 아닙니다 .3) 시작하려고 시도하지만 이번에는 sudo를 사용하지 마십시오 .4) 몽고가 데이터 / db /를 찾을 수 없으므로 su 홈 디렉토리 대신에 사용자 홈 디렉토리

그렇습니다, 그것은 정말로 멍청하지만 당신이 시스템에 있었기 때문에 오랜 시간이 걸리면 그것은 당신을 위로 올릴 수 있습니다.

짧은 대답 : 동일한 암시 적 홈 디렉토리로 mongo를 실행하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.