Raspberry Pi 3 64bit OS openSUSE: Build MongoDB 3.4

Raspberry Pi 3 64bit OS openSUSE 는 이글은 4개 글타래로 구성되며, openSUSE 설치 및 사용에 대해 작성한다.

Opensuse 에서 Raspberry Pi 3를 위한 64bit OS openSESE Leap 42.2 을 제공하고 있다.

  1. Install 64bit openSUSE Leap 42.2 / JeOS
  2. openSUSE: Managing Service daemon
  3. openSUSE: Basic OS Security for Server
  4. Install & Configuration - Nginx, Node JS
  5. Build MongoDB 3.4.x
자세히 보기
에서 보안 모델 없이 실행하는 것을 지향하고 있으나, 어쨌든 MongoDB도 ID와 비밀번호로 접근하는 기본적인 보안 모델을 가지고 있으니 이를 통해 MongoDB Server에 인증 과정을 추가해 보도록 합시다.

  1. 비인증 모드에서 관리자 계정 생성
  2. 인증 접속

1. 비인증 관리자 계정 생성하기

mongod로 별도의 보안 모델이 없는 MongoDB Server를 실행하고, MongoDB Shell에 접속합니다.

1
2
3
4
> mongo
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3

MongoDB에는 admin이라는 데이터베이스가 존재하며, 해당 데이터베이스에 사용자를 추가합니다.

1
2
3
4
5
6
> use admin
> db.createUser({
user: 'username',
pwd: 'password',
roles: ['userAdminAnyDatabase']
})

db.createUser()는 현재 사용하고 있는 데이터베이스(여기서는 admin)에 사용자를 추가합니다. 여기에는 사용자 이름, 비밀번호와 함께 권한(roles)을 array로 정의합니다. MongoDB에서 빌트인으로 제공하고 있는 권한은 MongoDB Built-In Roles에서 확인할 수 있습니다.

위에서 정의한 userAdminAnyDatabase는 어느 데이터베이스든 사용자를 생성하고 제거할 수 있다는 것을 의미합니다. 모든 권한을 가지게 하려면 root를 사용하면 되고, MongoDB 2.4 이하의 경우 db.addUser()를 통해 사용자를 추가합니다.

mongod 인증하기

만약 mongod 명령으로 실행하면 MongoDB Server를 실행하도록 한다.

1
> mongod --auth

MongoDB Server 재시작하기

Ubuntu와 같은 리눅스 시스템에서 service mongod start처럼 service를 이용할 경우, config 파일을 통해 실행됩니다. 이 경우 /etc/mongod.conf를 다음처럼 수정하고 재시작(service mongod restart)하면 됩니다.

mongodb 4.x

인증을 활성화 하려면

1
2
security:
authorization: enabled
mongodb 3.x

mongod.conf 를 사용하면 다음 옵션을 true 로 구성한다.

1
auth = true

그리고 서비스를 재시작한다.

1
2

$ sudo systemctl restart mongod.service

2. 인증 접속

mongo 쉘에 접속하여 db.auth()를 사용하는 것입니다.

1
2
3
4
5
$ mongo
MongoDB shell version v4.2.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("177716fe-5b3c-41f6-bdae-d2584819abff") }
MongoDB server version: 4.2.1

쉘에서 db.auth() 를 사용해 인증에 성공하면 1이 나오면 성공이다.

1
2
3
4
5
> use admin
switched to db admin
> db.auth('admin', '!23456789');
1
>

인증 접속이 되면 로그에 아래 같은 로그를 확인할 수 있다.

1
2019-12-02T09:49:24.392+0000 I  ACCESS   [conn3] Successfully authenticated as principal admin on admin from client 127.0.0.1:52370
명령행에서 접근

인증과 함께 admin 데이터베이스로 접근하려면 아래 같이 명령어에 아이디와 비밀번호를 명시만 해 주면 된다.

1
> mongo admin -u username -p password --authenticationDatabase admin

아래 같이 mongo 명령행에서 인증을 통해 접속하면 test 라는 데이터베이스로 접속합니다.

1
2
3
4
5
6
$ mongo -u admin -p
MongoDB shell version v4.2.1
Enter password:
...
>
> use admin

사용자 계정 만들기

관리자 계정을 만들고 인증까지 수행 했으면, 일반 사용자를 만들어 데이터베이스를 사용하도록 해보자. 관리자 계정을 만들었던 것처럼 계정을 만들고자 하는 데이터베이스를 use 한 다음 db.createUser()를 실행하면 된다.

1
2
3
4
5
6
7
8
9
> use bookdiary
switched to db bookdiary
> db.createUser({
... user:'student',
... pwd:'0123456789',
... roles:['dbOwner']
... });
Successfully added user: { "user" : "student", "roles" : [ "dbOwner" ] }
>

dbOwner라는 권한은 해당 데이터베이스에 대한 모든 수정/삭제 권한을 가진다는 것을 의미합니다.

사용자 인증

db.auth()를 통해 인증을 진행해 봅시다.

1
2
3
> db.auth('username', 'password')
1
>

참고

MongoDB Community Edition 3.6 on Ubuntu

2018-06-22 내용 정리, User auth 링크
{:.right-history}

이 문서는 Ubuntu/Debian 계열 정규 배포본에 3.x 버전을 지원하지 않는 플랫폼에 MongoDB Community Edition 3.6 버전을 설치하는 과정을 정리하고 있다. 내용의 기초는 MongoDB Community Edition 3.6 버전을 Amd64, Arm64 지원하는 64bit OS에 설치해 사용하기 위해서 Install MongoDB Community Edition, on-ubuntu를 따라서 진행하고 경험상 필요한 부분을 추가로 정리했다.

  • MongoDB Community Edition 3.6 설치
  • Mongo Database 구성
자세히 보기

NodeJS - mongoose middleware

Middleware

이 글은 mongoose middleware를 한글로 요약 정리한 것이다. 실제 본문을 요약하여 번역해 정리했으므로 이해가 안되는 부분은 위 링크의 내용을 참조하기 바란다.

자세히 보기

NodeJS - mongoose

이 글은 mongoose doc 에서 필요한 부분만 요약 정리했다.

MongoDB와 Mongoose

Node.js에서 Mongodb에 연결하기 위해서 Driver가 필요

mongoose

MongoDb를 위한 Node.js 커넥터로 Object Data Mapping (ODM)을 통해 MVC를 구현해 준다.

자세히 보기

mongodb - Collection

Collection

mongoDB는
mongoDB는 Collection 이 데이터베이스 테이블과 같은 개념이다. 아래 테이블은 관계형 데이터베이스 MySQL과 MongoDB의 개념을 비교해 주고 있다. [^1]

MySQL MongoDB
Table Collection
Row Document
Column Field
Joins Embedded documents, linking
자세히 보기

MongoDB - Database와 User Authentication

2018-06-21 설치 링크로 대체
{:.right-history}

MongoDB 설치후 데이터베이스 위치, 로그, 인증 등에 관련한 서버 구성과 설정을 정리한다.

MongoDB 2.6 과 MongoDB Community Edition 3.x 버전을 사용했다.

mongoDB 접근제어

mongoDB 는 설치과정 중에 인증과 관련해 설정하는 부분이 없어서 설치 후 누구나 DB에 접속 할 수 있다. 인증을 추가해 데이터베이스 관리자와 데이터베이스 사용자로 구분해서 이용하고, 각 데이터베이스의 사용자는 허가된 역할(Role)을 가지고 데이터베이스에 접근 가능하도록 구성한다.

자세히 보기

mongodb 3.4 on Armbian

2018-06-22 내용 정리, User auth 링크
{:.right-history}

이 문서는 MongoDB Community Edition 3.4 버전을 64bit OSAmd64, Arm64 지원 OS에 설치해 사용하기 위해서 Install MongoDB Community Edition, on-ubuntu를 따라서 진행했다.

여기서는 Arm을 사용하는 SBC[^2] 컴퓨터에 mongodb 3.4 버전을, Hardkernel Odroid C2를 사용해서 설치를 진행했다.

자세히 보기