방금 Ubuntu에 mongodb 버전 3.0.3을 설치했습니다. conf 파일을 편집하고 기본 데이터 디렉터리를 "/home/user/mongodb"로 변경하고 다음 권한을 부여했습니다.
drwxr-xr-x 4 mongodb mongodb 4096 May 29 23:26 mongodb
conf 파일에서 다른 것을 변경하지 않았습니다. mongod 서비스를 시작하려고 하면
sudo service mongod start
mongo 명령을 통해 쉘에 연결했는데 다음 오류가 발생했습니다.
MongoDB shell version: 3.0.3
connecting to: test
2015-05-29T23:58:49.450+0200 W NETWORK Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
2015-05-29T23:58:49.452+0200 E QUERY Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed
at connect (src/mongo/shell/mongo.js:179:14)
at (connect):1:6 at src/mongo/shell/mongo.js:179
exception: connect failed
서버를 시작하려고 할 때마다 로그 파일에 다음과 같이 표시됩니다.
2015-05-30T00:01:02.552+0200 I CONTROL ***** SERVER RESTARTED *****
2015-05-30T00:01:02.581+0200 I STORAGE [initandlisten] exception in initAndListen std::exception: boost::filesystem::status: Permission denied: "/home/user/mongodb/storage.bson", terminating
2015-05-30T00:01:02.581+0200 I CONTROL [initandlisten] dbexit: rc: 100
내가 아는 한 권한은 정확합니다. 무엇이 문제일까요?
답변1
기본적으로 사용자의 홈 디렉토리는 해당 소유자만 읽고 쓰고 나열할 수 있으므로 다른 사용자(루트 제외)는 다른 사용자의 홈 폴더 내용을 나열할 수 없습니다. 따라서 mongodb 사용자가 새로 제공된 디렉터리에 액세스할 수 있는지 확인해야 합니다. 다음과 같은 명령을 사용하여 확인할 수 있습니다.
namei -m /home/user/mongodb
출력 예
f: /home/scantlight/mongodb
dr-xr-xr-x /
drwxr-xr-x home
drwx------ scantlight
drwxr-xr-x mongodb
보시다시피 내 홈 폴더에는읽고 쓰기나는 권한이 있습니다, 소유자... 다른 사용자는 권한이 없으므로 다른 사용자가 내 홈 폴더의 내용을 나열할 수 없습니다(루트 제외).
물론 홈 디렉터리의 다른 사용자에게 쓰기 또는 읽기 권한을 부여하고 싶지는 않지만 대상 폴더에 대한 액세스 권한은 갖고 싶습니다. 여기서 x 플래그를 사용할 수 있습니다. 파일에 x 플래그가 설정되면 파일을 실행할 수 있다는 의미이므로 실행 플래그라고 합니다. 그러나 이 플래그가 폴더에 설정되고 r(읽기) 또는 w(쓰기) 플래그가 모두 설정되지 않으면 시간이 설정됩니다. 이는 동일한 그룹의 다른 사용자가 이 폴더를 통해 더 깊은 폴더에 접근할 수 있음을 의미합니다.
따라서 mongodb 사용자가 액세스하고 읽고 쓸 수 있는지 확인하십시오./홈/사용자/mongodb폴더... 홈 폴더에는 다른 모든 사용자에 대해 실행 가능한 플래그(x 플래그)가 설정되어 있어야 합니다.
chmod -R o+x /home/user/mongodb
이후 이전 출력 예는 다음과 같아야 합니다.
f: /home/scantlight/mongodb
dr-xr-xr-x /
drwxr-xr-x home
drwx-----x scantlight
drwxr-xr-x mongodb
다른 모든 사용자에 대한 x 권한을 참고하세요. 도움이 되지 않으면 :)... 내부의 파일 권한을 확인하세요./홈/사용자/mongodb폴더에 포함된 파일의 권한에 문제가 있을 수 있나요?