반응형

<참조> https://www.linuxhelp.com/how-to-install-and-configure-mongodb-on-centos-8-1

CentOS 8, MongoDB 몽고디비 설치 

정리. 수알치 오상문

https://www.youtube.com/watch?v=MynOXqXfPpQ 

 

MongoDB는 오픈소스 NoSQL 데이터베이스 시스템이다. 즉, SQL 기반의 MySQL, PostgreSQL과는 사용법이나 데이터베이스 구조가 다르다. JSON 같은 구조의 도큐먼트를 저장하기에 스키마를 미리 작성할 필요가 없다. 여기서는 CentOS 8.1 운영체제에서 MongoDB를 다루는 방법을 설명하고자 한다.

설치 방법:

1.  /etc/yum.repos.d/ 디렉터리에 mongodb-org.repo를 작성한다.

그러면 MongoDB repository를 사용 가능하게 된다.

 

Vi /etc/yum.repos.d/mongodb-org.repo  또는  Vim /etc/yum.repos.d/mongodb-org.repo 

 

[참고] vi 편집기를 이용하는 경우

'i' 키를 누르고 파일 내용을 작성하고

<Esc> 키를 누르고, ':' 키를 누른 후

'wq'를 눌러서 펴집기를 종료하면서 파일을 저장한다.

[root@linuxhelp ~]# Vim /etc/yum.repos.d/mongodb-org.repo
 [mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

2. mongodb-org meta-package를 설치한다(몽고디비 설치).

sudo dnf install mongodb-org

[root@linuxhelp ~]# sudo dnf install mongodb-org
CentOS Linux 8 - AppStream                                                 294 kB/s | 6.3 MB     00:21    
CentOS Linux 8 - BaseOS                                                    551 kB/s | 2.3 MB     00:04    
CentOS Linux 8 - Extras                                                    2.4 kB/s | 1.5 kB     00:00    
CentOS Linux 8 - Extras                                                    8.7 kB/s | 8.6 kB     00:00    
Extra Packages for Enterprise Linux Modular 8 - x86_64                     8.8 kB/s | 9.3 kB     00:01    
Extra Packages for Enterprise Linux 8 - x86_64                             4.5 kB/s | 4.1 kB     00:00    
Extra Packages for Enterprise Linux 8 - x86_64                             529 kB/s | 8.6 MB     00:16    

 

mongod를 실행하면 몽고디비를 사용할 수 있게 된다.

systemctl start mongod

[root@linuxhelp ~]# systemctl start mongod
 

3. 서버가 실행될 때 자동으로 mongod가 실행되게 설정한다.

systemctl enable mongod

[root@linuxhelp ~]# systemctl enable mongod

[참고] systemctl disable mongod  : 부팅 시 자동실행으로 등록된 mongod 실행을 중지 시키는 명령 

 

4. 현재 몽고디비 서비스 상태를 확인한다.

systemctl status mongod

[root@linuxhelp ~]# systemctl status mongod
● mongod.service - MongoDB Database Server
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-12-16 11:09:47 IST; 27s ago
     Docs: https://docs.mongodb.org/manual
 Main PID: 94188 (mongod)
   Memory: 94.0M
   CGroup: /system.slice/mongod.service
           └─94188 /usr/bin/mongod -f /etc/mongod.conf

 

5. mongo 쉘 프로그램을 실행한 후, 관리자 계정을 만들고 확인한다. 

 

mongo <엔터>

[root@linuxhelp ~]# mongo
MongoDB shell version v4.2.11
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("04e9bf3f-3317-411c-bdf2-abf0c8fa4821") }
MongoDB server version: 4.2.11
Welcome to the MongoDB shell.
Server has startup warnings: 
2020-12-16T11:09:46.450+0530 I  STORAGE  [initandlisten] 
2020-12-16T11:09:46.450+0530 I  STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2020-12-16T11:09:47.232+0530 I  CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2020-12-16T11:09:47.232+0530 I  CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-12-16T11:09:47.232+0530 I  CONTROL  [initandlisten] 
To enable free monitoring, run the following command: db.enableFreeMonitoring()
 

관리자 계정(예: mdadmin)을 만든다. 

use admin 명령 후 db.createUser( ... ) 실행 

> use admin
switched to db admin
> db.createUser(
... {
... user:"mdadmin",
... pwd: "password",
... roles: [{role:"userAdminAnyDatabase", db: "admin"}]
... }
... )
Successfully added user: {
	"user" : "mdadmin",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	]
}
 

mddmin 관리자 계정이 생성되었는지 확인한다.

show users

> show users
{
	"_id" : "admin.mdadmin",
	"userId" : UUID("98b57c9b-cf80-4dca-9b05-c39085bf764c"),
	"user" : "mdadmin",
	"db" : "admin",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	],
	"mechanisms" : [
		"SCRAM-SHA-1",
		"SCRAM-SHA-256"
	]
}
 
 
quit() 명령으로 mongo 쉘 프로그램을 종료한다.
> quit()
 
 

6. 데이터베이스 접근 시 인증 모드 사용(계정 접속)을 설정한다.

[root@linuxhelp ~]# vim /lib/systemd/system/mongod.service
Find the following line:
Environment="OPTIONS=--f /etc/mongod.conf"
Add the --auth option as follows:
Environment="OPTIONS= --auth -f /etc/mongod.conf"

 

7. mongo.d 서비스를 리로드하고 mongod를 재시작한다.

[root@linuxhelp ~]# systemctl --system daemon-reload
[root@linuxhelp ~]# systemctl restart mongod

 

8. 사용자 계정으로 몽고 디비를 테스트한다.

[root@linuxhelp ~]# mongo
MongoDB shell version v4.2.11
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
MongoDB server version: 4.2.11
switched to db admin
> use admin
Now show users
> show users
An error message should display:
2020-12-16T11:16:42.222+0530 E  QUERY    [js] uncaught exception: Error: command usersInfo requires authentication :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.getUsers@src/mongo/shell/db.js:1661:15
shellHelper.show@src/mongo/shell/utils.js:883:9
shellHelper@src/mongo/shell/utils.js:790:15
@(shellhelp2):1:1

 

9. 다음 명령을 사용하여 이전에 생성된 자격 증명으로 인증한다.

db.auth('mdadmin', '비밀번호')

> db.auth('mdadmin','password')
1
Now show users to confirm
> show users
{
	"_id" : "admin.mdadmin",
	"userId" : UUID("98b57c9b-cf80-4dca-9b05-c39085bf764c"),
	"user" : "mdadmin",
	"db" : "admin",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	],
	"mechanisms" : [
		"SCRAM-SHA-1",
		"SCRAM-SHA-256"
	]
}
 

[ FAQ ]

Q : MongoDB “Namespace”란 무엇인가요?

A : MongoDB는 BSON (Binary Interchange and Structure Object Notation) 객체를 콜렉션(collection)에 저장합니다. 컬렉션 이름과 데이터베이스 이름 연결을 네임스페이스라고 부릅니다.
 
 
Q : mongodb .repo는 기존에 존재하고 있나요?
A : 아니요, 직접 만들고 구성에 추가해야 합니다.
 
Q : MongoDB는 SQL을 지원하나요?
A : 사용할 수는 없습니다. 그러나 MongoDB는 다양한 쿼리 기능을 제공합니다. 
 
 
반응형

+ Recent posts