본문 바로가기

Technical/DBMS

mongoDB 보안 설정하기(1.2.2 기준)


mongo db는 몽고 라는 나라와 전혀 상관이 없다. Humongous 하는 단어에서 만들어진 것.

설치후 아무런 제약 없이 ./mongo 만 치면 db에 접속된다. 개발환경이라면 문제 없지만
개념 없이 쓰다가 큰 일 ㅡ_-? 이 날지도...

우선 mongod를 기동시킬 때 --auth 옵션을 추가해 두자.
다음 글에서 mongod 를 시스템 스타트시에 기동되도록 설정하는 방법을 정리할 것이다. ubuntu, centos, suse 등
거의 모든 linux 머신에서 특정 App을 기동시키는 일반적인 방법이 되겠다.

각설하고,
mongo db는 system 영역 내에 admin 이라는 DB 관리를 위한 스키마 영역(database)를 가진다.
* 메서드 Name에 대소문자 구분 주의
# ./mongo
# use admin
# db.addUser( "adminname", "adminpassword" )
이제 관리자로 접근하려면
# db.auth( "adminname", "adminpassword" )
라고 입력해야만 DB를 use 할 수 있다.

* 이제 DB를 관리하기 위해서는 반드시 아래와 같이 해야만 정상적으로 접속되고 user 생성 등을 할 수 있다.
# mongo -uroot -padminpassword --port 12345 admin

# db.system.useres.find() => users 테이블 내용을 select

일반적인 작업 영역을 위해 별도의 DB를 만들고 권한을 설정하려면
# use newdb => mongo는 newdb가 없으면 자동으로 생성한다. table(collection이라고도 한다)이나
                        key(attribute, column)에 대해서도 마찬가지. 즉, DDL이 따로 없다. C/C++의 structure
                        구조와 같은 composite한 다중 컬럼도 생성이 가능하므로 자칫하면 table 구조가 엉망이 될
                        수도 있다.
# db.addUser( "newdbuser", "newpassword" )
이제 newdb 데이터베이스로 접근하려면
# db.auth( "newdbuser", "newpassword" ) 로 접근할 수 있다.

* 데이터베이스마다 owner 개념으로 접근 계정을 각각 할당하는 방식에 유의 !!!

이제 데이터베이스에 접속하려면  아래 방법들 처럼 접속이 가능하다
# mongo -unewdbuser -pnewpassword newdb --port 27017 --host 100.100.100.20
# mongo -uroot -padminpassword --port 29007 newdb