2012-07-01 5 views
9

Capistrano 작업에서 MongoDB 데이터베이스를 만들고 싶다면 MongoDB가 auth를 켠 채로 실행될 때 MongoDB 셸을 통해 새 데이터베이스를 만드는 방법을 알아야합니다.auth가 켜져있는 상태에서 명령 줄에서 새로운 MongoDB를 만드는 방법은 무엇입니까?

auth를 켜면 MongoDB 쉘은 먼저 인증하지 않고는 아무 것도 할 수 없지만 admin 데이터베이스를 사용하는 동안 인증을해야합니다. 나는 데이터베이스를 작성해야 그 시점에서 ...

sudo -u mongodb mongo admin --eval "db.auth(username, password)" 

그리고 그 추가 조치 저를 인증하지만, 같은 쉘 세션에 대한 사용자 : 그래서 내가 좋아하는 우선 그것을 연결했습니다 . 그러나 나는 할 수 없습니다 :

sudo -u mongodb mongo admin --eval "db.auth(username, password);use new_database" 

use database은 eval에서 사용할 수 없기 때문에 사용할 수 없습니다. 그래서 내가 대신 시도했다 :

sudo -u mongodb mongo admin --eval "db.auth(username, password);db = connect('localhost:27017/new_database')" 

그리고 그 사실은 나에게 내가 만든 싶지만 내가하려고하면 새 데이터베이스의 인스턴스를 얻을 것이다 :

sudo -u mongodb mongo admin --eval "db.auth(username, password);connect('localhost:27017/new_database').addUser(new_user, new_password)" 

내가 인증 오류를, 그래서 분명히 connect() 명령을 사용하면 이전에 인증 한 것을 잊어 버릴 수 있습니다.

그래서 여기에 정체가 있습니다. 인증 및 관리자를 사용하여 MongoDB를 사용하여 한 줄에 데이터베이스를 만들려고합니다.

어떻게 할 수 있습니까?

답변

12

당신은 새 데이터베이스를 참조하고 새 계정을 추가 할 db.getSiblingDB(name)을 사용할 수 있습니다 예 :

이제
mongo -u username -p password admin --eval "db.getSiblingDB('new_database').addUser('new_user', 'new_password');" 

는 -u 및 -p를 사용하여 명령 행에서 인증 할 수 있어야한다 :

mongo -u new_user -p new_password new_database 
+0

완벽한 작품, 감사합니다! – rjoll

+0

http://docs.mongodb.org/manual/reference/method/db.getSiblingDB/ – kschaper

+0

@kschaper : 감사합니다. 이전 wiki 링크의 문서 링크를 수정했습니다. – Stennie

0

addUser 기능이 버전 2.6 이후로 사용 중지되었습니다.

db.addUser() 대신 db.createUser()db.updateUser()을 사용하여 MongoDB에 사용자를 추가하십시오.

코드는 아래와 같이해야합니다 :

mongo -u username -p password admin --eval "db.getSiblingDB('new_database').createUser({ user : 'new_user', pwd : 'new_password', roles : [{ role: 'readWrite', db: 'new_database'}]});" 
관련 문제