티스토리 뷰
Mysql / MariaDB 에 익숙한 분들은 다소 어색할수 있는 MongoDB 에서 Authorization 기능을 사용하는 방법입니다.
MongoDB 의 설치방법은 아래를 참고하시기 바랍니다.
2015/10/05 - [Database/MongoDB] - Ubuntu 에서 MongoDB 3.0 설치방법
우선 간단히 RDBMS 와 다른점을 알려 드리면 RDBMS 는 설치와 동시에 root 패스워드를 생성하고 인증 체계를 확립합니다. 하지만 MongoDB, Redis 는 root 계정을 초기에 설정하지 않습니다. 따라서 아무 인증 없이 접속이 가능합니다.
1. 사용자 관리 계정 만들기
우선 MongoDB 가 처음 설치된 상태에서 mongo 를 이용해 접속합니다.
$ mongo
그리고 아래의 명령어로 사용자 관리 계정을 생성하도록 합니다.
use admin db.createUser( { user: "tutorialbook_io", pwd: "TutoriAL231", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
간단히 설명드리자면 admin 이라는 DB 를 이용하여 userAdminAnyDatabase 권한을 가진 유저를 생성한 것 입니다. userAdminAnyDatabase 가 가지는 권한은 여러가지가 있지만 기본적으로 데이터베이스의 사용자 관련 권한을 부여, 수정할 수 있는 권한을 가지게 됩니다.
2. 네트워크 접속 허용 및 포트변경 보안 ( Security ) 의 Authorization 기능 사용설정
위와 같이 사용자 설정을 끝냇다면 이제 mongodb 의 설정을 할 차례 입니다. exit 로 mongodb 를 나온 후 /etc/mongod.conf 를 수정하도록 합니다.
$ sudo vim /etc/mongod.conf
여기서 수정 해야할 부분은 net 부분과 authorization 부분입니다.
net 은 port 와 bindIp 를 관리 하는대 여기서 port 는 원하시는 port 로 bindIp 는 네트워크 접속을 하시는 설정에 따라서 변경하시면 됩니다. * 기본 포트를 사용하셔도 상관 없긴하지만 변경하는 것을 추천 드립니다.
# network interfaces net: port: 25321 #bindIp: 127.0.0.1
제 경우 위와 같이 port 는 25321 그리고 bindIP 는 주석을 주었습니다. 실제 서버에서 내부 네트워크 만으로 접속을 하게 된다면 bindIp 를 걸어서 운영하시기 바랍니다. 제 경우 테스트를 위한 서버 설정이기 때문에 풀어 주었습니다.
* bindIP 의 경우 여러개의 IP 를 , (쉼표) 와 함께 나열할 수 있습니다 ex) bindIp:127.0.0.1, 10.0.0.2, 192.168.0.2
그리고 하단의 #security 부분의 주석을 풀어 주시고 아래와 같이 authorization 을 추가하시기 바랍니다.
security: authorization: enabled
authorization: enabled 를 추가할 경우 비밀번호가 없는 사용자는 접속을 할 수 없게 됩니다. 따라서 1. 사용자 관리 계정 만들기에서 생성한 계정만이 접속이 가능하게 됩니다.
아래는 mongod.conf 의 결과 입니다.
이제 저장 후 나오신 후 mongodb 를 재시작 해주시기 바랍니다.
$ service mongod restart
2. 계정 접속 후 일반 DB 사용자 계정 만들기
이제 기본적인 준비가 되었습니다. 외부에서 접속하기 위해 DB 를 만들어 권한을 넣어줄 차례 입니다. 우선 아래의 명령어로 DB 를 접속 하도록 합니다.
mongo --port <포트> -u "<사용자 계정>" -p "<비밀번호>" --authenticationDatabase "admin" ex) mongo --port 25321 -u "tutorialbook_io" -p "TutoriAL231" --authenticationDatabase "admin"
접속이 되셨다면 아래의 명령어로 DB 와 사용자 계정의 생성이 가능합니다.
usedb.createUser({ user: "<사용자 계정>", pwd: "<비밀번호>", roles: ["dbAdmin", "readWrite"] }) ex) use tutorialbook_io_user db.createUser({ user: "tutorialbook_manager", pwd: "tutori2341", roles: ["dbAdmin", "readWrite"] })
Roles 는 사용자의 권한으로 아래의 링크를 참고하시기 바랍니다.
이제 외부에서 DB 로 접속을 시도해볼 차례 입니다. 혹은 내부에서 테스트 해보고 싶으신분은 위의 명령어를 수정하여 사용이 가능합니다.
mongo --port <포트> -u "<사용자 계정>" -p "<비밀번호>" --authenticationDatabase "" ex) mongo --port 25321 -u "tutorialbook_manager" -p "tutori2341" --authenticationDatabase "tutorialbook_io_user"
혹은 외부 접속기를 통하여 접속을 시도해 보도록 합니다. 제 경우 MAC 에서 MongoHub 를 이용합니다.
아래는 모두 정상적으로 접속된 모습입니다.
Console 로 접속시
MAC 의 MongoHub 로 접속시
만약 MongoDB 를 URI 를 이용해 접속하게 되는 상황이 있으시다면 간단히 아래에 포멧을 적어 두겠습니다.
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] ex) mongodb://tutorialbook_manager:tutori2341@192.168.10.2:25321/tutorialbook_io_user
참고 자료 Connection String URI Format
즐거운 개발 되시기 바랍니다.
'Database > MongoDB' 카테고리의 다른 글
Ubuntu 14.04 에서 apt-get 으로 MongoDB 설치 과정에서 NO_PUBKEY 에러 해결하기 (0) | 2016.03.01 |
---|---|
MongoDB 네트워크 접속하기 및 111 에러 (0) | 2015.10.10 |
Ubuntu 에서 MongoDB 3.0 설치방법 (0) | 2015.10.05 |
- Total
- Today
- Yesterday
- 튜토리얼북
- 웹 개발자
- SNS
- mac
- Database
- Tutorialbook
- cocos2d-x
- 데이터베이스
- 게임
- Developer
- 우분투
- 서버
- php
- ubuntu
- 개발자
- 웹 서버
- Laravel
- 맥
- html
- 게임 개발
- Nodejs
- JavaScript
- 에러
- 개발
- 웹
- 서버 개발
- it
- 웹 개발
- 설치
- 인터넷
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |