'전체 글'에 해당되는 글 32건

  1. 2018.10.28 MongoDB 계정 설정 및 인증 절차
  2. 2018.10.28 MongoDB 네트워크 및 옵션 설정

mongoDB는 mongo 명령어로 쉘에서 바로 접속해서 작업하는게 가능합니다.

하지만 서비스 운영중이라면 이건 좀 위험하다는 생각이 드실거에요.

그래서 패스워드를 통한 계정 설정 및 로그인 방법을 간단히 정리했습니다.

 

 

1. 우선 mongod 서비스를 실행합니다.

$mongod --port 27017 --dbpath /data/db

 

2. mongo 명령어로 콘솔에 접속합니다.

$mongo

 

3. admin 계정을 먼저 생성해봅시다.

> use admin                                            # system 영역 디비를 사용하겠다는 의미
> db.createUser({
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})

성공하면 다음과 같은 메시지가 뜹니다.

Successfully added user: {

"user" : "myUserAdmin",

"roles" : [

{

"role" : "userAdminAnyDatabase",

"db" : "admin"

}

]

}

 

4. 디비를 생성하고 디비 사용자 계정을 생성합니다.

> use test                            #mongoDB에서는 use 명령으로 디비가 생성되며, 최초 컬렉션 및 document 추가 때 실제 db의 데이터 영역이 설정됩니다.
> db.createUser(
{
user: "myTester",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "test" },
{ role: "read", db: "reporting" } ]
})

위의 메시지와 비슷하게 성공했다고 메시지가 뜰겁니다.

 

5. 이제 생성한 계정으로 접속을 해봐야죠.

우선 mongod 서비스에서 인증모드를 활성화 해야합니다.

(1) mongod 명령 실행시 --auth 파라미터를 추가

(2) service 명령어로 실행시에는 설정파일에 다음 내용을 추가한 후 mongod 를 재시작

security:

authorization: enabled

 

$ sudo service mongod restart

$ mongo 127.0.0.1:27017/admin -u 'root' -p '<패스워드>'    #admin으로 로그인

$ mongo 127.0.0.1:27017/kevins_data -u 'kevinJ' -p '<패스워드>'       #db별 사용자로 로그인

 

로그인이 되면 콘솔에서 명령어를 입력하여 컬렉션 추가, document CRUD 작업 등을 할 수 있습니다.

아래 사진은 터미널에서 콘솔로 접속하여 작업을 수행하는 모습입니다.

 

참고한 사이트는 다음과 같습니다~

1. http://html5around.com/wordpress/tutorials/mongodb-%EC%9D%B8%EC%A6%9D%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0/

2. http://blog.freezner.com/archives/1040

3. http://egloos.zum.com/tiger5net/v/5711233

 

Posted by kevin.jeong.
,

몽고디비 서비스를 실행할 때는 별도의 argument를 주지 않는 한 설정 파일에 기반해 실행됩니다.

패키지 매니저를 통해 설치하였을 경우 /etc/mongod.conf 로 설정파일이 자동 생성되어 실행되며, 바이너리 파일을 통해 설치한 경우는 별도의 생성파일을 만들어 서비스 실행시 지정해야 합니다.

설정파일은 텍스트로 구성되어 있으며, 계층구조로 옵션을 지정할 수 있습니다.

우선 설정파일을 한번 구경해보겠습니다.

 

제일 상위 옵션은

systemLog:

storage:

processManagement:

net:

security:

setParameter:

operationProfiling:

replication:

shading:

auditLog:

snmp:

등이 있으며, 엔터프라이즈 버전에 한해 텍스트 검색 옵션을 지정할 수 있습니다.

 

가장 먼저 보게 되는게 net 설정입니다.

왜냐하면 mongoDB설치했을때 기본 허용 IP가 127.0.0.1, 즉 로컬 전용으로만 설정되어 있거든요.

그래서 AWS상에서 사용한다거나, 분산환경에서 사용한다거나 할때 이게 안되있으면 접속이 안붙습니다ㅠㅠ

풀어주는 방법은 간단합니다. bindIp: 옆에 있는 ip주소를 0.0.0.0으로 바꿔주면 됩니다.

(물론 특정 ip를 지정해도 되지만,  나중에 관리하기 불편할거 같네요.)

 

port: 는 mongoDB가 연결을 받을 포트번호이고, 이건 기본 설정인 27017로 그대로 두고 쓰시면 되고요.

maxIncomingConnections: 는 최대 허용 접속 수를 의미하는 거고 기본 값은 65536 입니다.

서비스 운영시에는 숫자를 조금씩 늘려주시면 됩니다.

 

systemLog 설정은 mongoDB의 로그 설정을 위한 것입니다.

여기서부터는 빠르게 설명하겠습니다.

 

systemLog:

verbosity: <int>                                  #아웃풋 메시지의 로그 단계로 0(모든 메시지) - 6(치명적인 에러) 중에서 적정한 수준을 선택합니다.

quiet: <boolean>                                #아웃풋을 제한하는 옵션입니다. 권장되지 않습니다.

traceAllExceptions: <boolean>          #에러가 발생할 경우 이 옵션을 true로 하면 자바 exception처럼 tracing을 시도한다고 합니다.

syslogFacility: <string>                      #OS의 syslog 아웃풋을 로깅할때 사용한다고 합니다.

                                                           #이 옵션을 argument로 지정하려면 --syslog를 추가해야한다고 하네요.

path: <string>                                   #로그파일이 위치할 디렉토리 경로입니다.

logAppend: <boolean>                     #이 옵션을 true로 하면 하나의 로그파일에 계속 로그를 기록하고,

                                                         #false로 하면 재부팅할때 마다 기존 로그 파일을 백업하고 다시 생성합니다.

logRotate: <string>                          #rename으로 설정하면 로그파일의 이름을 바꿔주고, reopen으로 설정하면

#Linux/Unix의 로그 정책에 따라 로그파일을 닫고 다시 연다고 하네요. 정확한 액션은 저도 잘...

destination: <string>                      #로그를 파일로 남기려면 file로, 콘솔등에 출력하려면 syslog로 설정합니다.

timeStampFormat: <string>         #ctime - Wed Dec 31 18:17:54.811. 의 형식으로 출력합니다.

#iso8601-utc - iso8601 포맷으로 UTC 표준시간을 기준으로 출력

#iso8601-local - iso8601 포맷으로 각 지역대의 시간을 기준으로 출력

 

옵션에 대한 자세한 설명은 몽고디비의 문서를 확인하시고, 필요할때 찾아서 바로 적용하시면 될거 같습니다~

(https://docs.mongodb.com/manual/reference/configuration-options/)

 

Posted by kevin.jeong.
,