문제

나는 그것이 미래의 신청을 위해 취하고 싶은 경로인지 여부를 평가하기 위해 MongoDB를 알아 내려고 노력하고 있습니다. 내 서버에 현명하게 배포하려면 인증 활성화로 실행해야합니다 (즉 --auth 논쟁 또는 auth = true 구성 파일에서).

설치는 비교적 직선적인 것처럼 보이며 필요한 경우 문서의 도움을 받고 있습니다. 특히, 보안 섹션 Auth 활성화로 실행되는 프로세스를 설명하고 첫 번째 관리자 사용자를 삽입하는 데 꽤 좋은 작업을 수행합니다. 그러나 계획에 따라 상황이 진행되지 않았습니다.

달리기 없이 인증은 다음과 같은 출력으로 실행됩니다.

Thu Dec 10 21:14:24 Mongo DB : starting : pid = 9350 port = 27017 dbpath = /var/mongodb_data master = 0 slave = 0  64-bit 
Thu Dec 10 21:14:24 db version v1.3.0-, pdfile version 4.5
Thu Dec 10 21:14:24 git version: 32d56f6d81a98b569103149c9ffea9f25a1ece81
Thu Dec 10 21:14:24 sys info: Darwin erh2.10gen.cc 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; root:xnu-1228.9.59~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_37
Thu Dec 10 21:14:24 waiting for connections on port 27017

그러나 달리기 ~와 함께 인증 (메소드, Arg 또는 Config Directive 두 가지 사용)은 다음 출력을 산출하고 프로세스는 즉시 종료됩니다.

Thu Dec 10 21:15:37 Mongo DB : starting : pid = 9361 port = 27017 dbpath = /var/mongodb_data master = 0 slave = 0  64-bit 
Thu Dec 10 21:15:37 User Exception unauthorized
Thu Dec 10 21:15:37  local.system.namespaces  Caught Assertion in runQuery ns:local.system.namespaces userassert:unauthorized
Thu Dec 10 21:15:37   ntoskip:0 ntoreturn:0
Thu Dec 10 21:15:37   query:{ name: /^local.temp./ }
Thu Dec 10 21:15:37 query local.system.namespaces ntoreturn:0 exception  0ms
Thu Dec 10 21:15:37 Dropping old temporary collection: 
Thu Dec 10 21:15:37 User Exception no collection name
Thu Dec 10 21:15:37   exception in initAndListen std::exception: no collection name, terminating
Thu Dec 10 21:15:37  dbexit: 
Thu Dec 10 21:15:37   shutdown: going to flush oplog...
Thu Dec 10 21:15:37   shutdown: going to close sockets...
Thu Dec 10 21:15:37   shutdown: waiting for fs...
Thu Dec 10 21:15:37   shutdown: closing all files...
Thu Dec 10 21:15:37      closeAllFiles() finished
Thu Dec 10 21:15:37   shutdown: removing fs lock...
Thu Dec 10 21:15:37  dbexit: really exiting now
ERROR: Client::shutdown not called!

태그에서 언급 한 바와 같이, 이것은 OS X Snow Leopard에서 실행 중이며 최신 1.3.x Nightly OS X 64 비트 바이너리 다운로드를 사용하고 있습니다 (1.2 안정으로 되돌아 가야합니까?).

이것을 일으키는 원인과 해결하기 위해 무엇을 할 수 있는지 아십니까? 로컬 컴퓨터에서는 중요하지 않지만 생산 사용에 전혀 실용적으로 만들기 위해 안전 모드에서 작동해야합니다.


추신 : 이것이 ServerFault에 있지 않으면 자유롭게 움직일 수 있습니다. 어떤 환경이 가장 적합한 지 잘 모르겠습니다.


업데이트:

Mdirolf와 Mathias의 추천대로 인증없이 실행을 시도하고 사용자를 추가하고 Auth를 다시 시작했습니다. 그러나 여전히 같은 오류를 던지고 있습니다. 사용자는 다음과 같은 방식으로 추가되었습니다.

Mark@Destiny mongodb$ sudo bin/mongo
MongoDB shell version: 1.3.0-
url: test
connecting to: test
type "help" for help
> use admin
switched to db admin
> db.addUser("Mark", "my-password-went-here")   
{ "user" : "Mark", "pwd" : "9934...be15da0" }
> db.system.users.find()
{ "_id" : ObjectId("4b216ed0be8a0b185767654e"), "user" : "Mark", "pwd" : "9934a190b...babe15da0" }
> exit
bye

인증없이 실행 중이고 몽고 쉘에 들어가는 것은 사용자가 실제로 여전히 존재한다는 것을 증명합니다. 내가 멍청한 짓을하고 있니?

도움이 되었습니까?

해결책

아, 마스터에서 버그를 찾은 것 같습니다. 나는 그것을위한 사례를 만들었습니다. http://jira.mongodb.org/browse/server-474.

최근에 발표 된 MongoDB 1.2.0을 사용해보십시오. Git Master (1.3.x Branch)입니다 ~ 아니다 아직 사용할 준비가되었습니다.

다른 팁

-auth로 서버를 시작하기 전에 이미 관리자 DB에 사용자가 있어야합니다. 나는 이것을 언급하기 위해 문서에 메모를 추가하여 아무도 놀라지 않습니다.

그건 그렇고, 대부분의 (전부가 아닌 경우) MongoDB 배포는 인증없이 실행됩니다. 응용 프로그램에서 인증을 처리하고 데이터베이스 서버에서 방화벽을 구성하여 웹/앱 서버의 연결 만 허용하는 것이 좋습니다.

--auth로 시작하기 전에 사용자를 추가해야합니다. --auth없이 시작하고 사용자를 추가 한 다음 --auth로 다시 시작하십시오.

보안 섹션이이를 설명하기 위해 업데이트되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top