본문 바로가기

DataBase

우분투 22.04 에 MongoDB 6.0 설치 하는 방법 admin 생성 db 생성 전부 알려드립니다.

반응형

 

https://techviewleo.com/install-mongodb-on-ubuntu-linux/

NoSQL 데이터베이스는 관계형 테이블이 아닌 형식으로 데이터를 저장하는 비표형 데이터베이스이다. 데이터 아키텍처에 따라 NoSQL 데이터베이스의 유형이 다양합니다. 문서, 키 값, 그래프 및 넓은 열이 주요 유형입니다. 유연한 스키마를 제공하고 많은 사용자 로드와 데이터 로드에서도 확장이 잘 됩니다.


몽고DB는 크로스 플랫폼, 전체적으로 객체 지향적이고 단순하며 유연한 NoSQL 데이터베이스이다. JSON과 유사한 문서에 데이터를 저장한다. 여기서 데이터 개체는 행과 열이 사용되는 다른 위치와 달리 별도의 BSON 항목으로 저장됩니다. 그런 다음 응용 프로그램은 이러한 데이터 요소를 JSON 형식으로 가져옵니다. 몽고DB는 C++로 개발되었기 때문에 엄청난 확장성과 유연성을 가지고 있어 개발자들이 데이터를 쉽게 조회하고 인덱싱할 수 있다.

MySQL은 인기 있는 경량 몽고DB 대체품이다. MySQL은 PHP와 자바 온라인 애플리케이션에서 자주 사용된다. 다양한 타사 프로그램 및 서비스를 사용할 수 있으며 MySQL은 어레이와 빠르게 상호 작용합니다. MySQL의 신뢰성과 가격은 모두 잘 알려져 있다.

2023.02.17 - [일상 공부] - [MongoDB] Window OS에 MongoDB 설치 방법[error체크]

IT분야에서의 MongoDB 활용방안
사실상 모든 데이터 구조는 몽고DB의 문서 구조를 사용하여 쉽게 설명되고 조작될 수 있다.
몽고DB가 유연하기 때문에 데이터 구조를 변경하기 위해 웹사이트나 애플리케이션을 종료해야 하는 데 익숙하다면 운이 좋다.
MongoDB는 데이터를 문서 형식으로 표현하고 저장하기로 선택했기 때문에 파이썬의 사전, 자바스크립트의 객체, 자바의 맵 등 해당 언어에 특화된 데이터 구조를 사용하여 모든 언어에서 데이터에 액세스할 수 있습니다.
성능을 유지하고 수평적으로 확장하려면 실시간 복제를 사용하여 클러스터를 구축하고 여러 클러스터에 걸쳐 대규모 또는 고 처리량 컬렉션을 공유하십시오.
데이터 접근은 가입이나 거래가 거의 필요 없는 몽고DB에 의해 단순화된다.
전통적인 관계형 데이터베이스에서 값비싼 조인 절차를 수행할 필요 없이 몽고DB의 문서 모델을 사용하여 정보를 단일 문서에 통합할 수 있다.
이렇게 하면 쿼리 속도가 빨라지고 필요한 모든 정보가 단일 데이터베이스 호출로 다시 제공됩니다.
몽고DB는 다양한 적응형 방법을 제공한다.
현재 요구 사항에 해당하는 클라우드 기반 MongoDB Atlas의 인스턴스 크기를 선택할 수 있습니다.
MongoDB 클러스터는 MongoDB Atlas 덕분에 더 쉽게 설정 및 생성할 수 있습니다.
당신은 사용자 친화적인 UI에서 몇 번의 클릭만으로 영원히 무료인 완전히 새로운 인스턴스를 시작할 수 있다.

 

1단계: 시스템 업데이트 수행
설치를 계속하기 전에 Ubuntu  시스템을 업데이트하고 필요한 패키지를 설치합니다:

sudo apt update
sudo apt install wget curl gnupg2 software-properties-common apt-transport-https ca-certificates lsb-release

2단계: 공용 키 가져오기
다음 명령을 실행하여 MongoDB 공용 GPG 키를 가져옵니다:

curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb-6.gpg

3단계: MongoDB Repo 구성
다음 명령을 사용하여 시스템에 리포지토리를 즉시 추가합니다:

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

4단계: Ubuntu에 MongoDB 6.0 설치 22.04
적절한 리포지토리가 추가되면 다음 명령을 사용하여 Ubuntu에 MongoDB 6.0을 설치합니다.

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.16_amd64.deb
sudo dpkg -i ./libssl1.1_1.1.1f-1ubuntu2.16_amd64.deb
sudo apt update
sudo apt install mongodb-org

고생하셨습니다. 해당 명령어를 입력하고 눈 딱 감으세요 

$ systemctl status mongod
● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset>
     Active: active (running) since Fri 2023-02-17 23:55:57 KST; 11s ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 39764 (mongod)
     Memory: 65.1M
        CPU: 610ms
     CGroup: /system.slice/mongod.service
             └─39764 /usr/bin/mongod --config /etc/mongod.conf

 2월 17 23:55:57 centumjoonho systemd[1]: Started MongoDB Database Server.
lines 1-11/11 (END)

이렇게 서버가 확인 가능합니다.

반응형
$  mongod --version
db version v6.0.4
Build Info: {
    "version": "6.0.4",
    "gitVersion": "44ff59461c1353638a71e710f385a566bcd2f547",
    "openSSLVersion": "OpenSSL 3.0.2 15 Mar 2022",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "ubuntu2204",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

 /etc/mongod.conf  어떤 정보가 있나 확인해봅니다. 

 mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
#  engine:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1
# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
bindIp: 0.0.0.0

이렇게 바꿔줍니다. 

모든 곳에서 접속이 가능하게 해줍니다. 

sudo systemctl restart mongod
sudo ufw allow 27017

해당 포트도 열어 줍니다. 

방화벽에 걸리지 않도록 

몽고DB의 데이터 저장소 경로는 기본적으로 /var/lib/mongodb입니다. 그러나 다른 경로를 선택한 경우 이를 조정할 수 있습니다. 이를 위해 현재 작동 중인 인스턴스를 중지합니다:

sudo systemctl stop mongod.service

필요한 경로를 생성하고 데이터를 저장할 수 있는 적절한 권한을 부여합니다: 

sudo mkdir -p /newdata/mongo
sudo chown -R mongodb:mongodb  /newdata/mongo

이전 경로의 내용을 새 디렉터리에 복사해야 합니다:

sudo rsync -av /var/lib/mongodb  /newdata/mongo

그런 다음 이전 디렉터리의 이름을 백업 파일로 변경합니다:

sudo mv /var/lib/mongodb /var/lib/mongodb.bak

이제 새 디렉터리에 대한 상징적인 링크를 만듭니다:

sudo ln -s /newdata/mongo /var/lib/mongodb

 

재시작

sudo systemctl daemon-reload
sudo systemctl start mongod

다음 명령을 사용하여 MongoDB 셸에 연결할 수 있습니다:

mongosh
$ mongosh
Current Mongosh Log ID:	63ef9adb15120fb0c127738d
Connecting to:		mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.7.1
Using MongoDB:		6.0.4
Using Mongosh:		1.7.1

For mongosh info see: https://docs.mongodb.com/mongodb-shell/


To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy).
You can opt-out by running the disableTelemetry() command.

------
   The server generated these startup warnings when booting
   2023-02-18T00:18:30.850+09:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
   2023-02-18T00:18:31.308+09:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
   2023-02-18T00:18:31.308+09:00: vm.max_map_count is too low
------

------
   Enable MongoDB's free cloud-based monitoring service, which will then receive and display
   metrics about your deployment (disk utilization, CPU, operation statistics, etc).
   
   The monitoring data will be available on a MongoDB website with a unique URL accessible to you
   and anyone you share the URL with. MongoDB may use this information to make product
   improvements and to suggest MongoDB products and deployment options to you.
   
   To enable free monitoring, run the following command: db.enableFreeMonitoring()
   To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
------

test>

MongoDB에서 사용자 생성 및 역할 추가
우리는 mongdbuser라는 이름의 사용자를 만들고 이 가이드의 목적을 위해 그들에게 관리자 역할을 줄 것이다.
그러나 이 명령을 사용하여 원하는 사용자를 만들 수 있습니다.

use admin
db.createUser(
{
user: "mongdbuser",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)

비밀번호 입력 후

test> use admin
switched to db admin
admin> db.createUser(
... {
... user: "mongdbuser",
... pwd: passwordPrompt(), // or cleartext password
... roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
... }
... )
Enter password
*********{ ok: 1 }
admin>

사용자에게 올바른 암호를 지정한 다음 아래 나열된 명령을 사용하여 셸을 닫습니다.

> exit
bye

사용자 자격 증명을 사용하여 셸에 로그인하여 사용자가 생성되었는지 확인합니다.

mongosh -u mongdbuser -p --authenticationDatabase admin

-> 나는 이거 왜 에러나지 ? 

$ mongosh -u mongdbuser -p
Enter password: ********
Current Mongosh Log ID:	63efa269c75f953c6759b306
Connecting to:		mongodb://<credentials>@127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.7.1
MongoServerError: Authentication failed.
db.createUser(
{
user: "mongodbjoonho",
pwd: "*****",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)

이유는 모르겠고 그냥 짜증나서  user 하나 더만들었다

$ mongosh -u mongdbjoonho -p --authenticationDatabase admin

이렇게 만드니까 잘된다.

$ mongosh -u mongodbjoonho -p --authenticationDatabase admin
Enter password: ********
Current Mongosh Log ID:	63efa4c8c1a7fde80ef38d80
Connecting to:		mongodb://<credentials>@127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&authSource=admin&appName=mongosh+1.7.1
Using MongoDB:		6.0.4
Using Mongosh:		1.7.1

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

------
   The server generated these startup warnings when booting
   2023-02-18T00:18:30.850+09:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
   2023-02-18T00:18:31.308+09:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
   2023-02-18T00:18:31.308+09:00: vm.max_map_count is too low
------

------
   Enable MongoDB's free cloud-based monitoring service, which will then receive and display
   metrics about your deployment (disk utilization, CPU, operation statistics, etc).
   
   The monitoring data will be available on a MongoDB website with a unique URL accessible to you
   and anyone you share the URL with. MongoDB may use this information to make product
   improvements and to suggest MongoDB products and deployment options to you.
   
   To enable free monitoring, run the following command: db.enableFreeMonitoring()
   To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
------

test> exit

> show dbs
admin   132.00 KiB
config   12.00 KiB
local    72.00 KiB

MongoDB로 데이터베이스를 만드는 것은 간단합니다. 빈 데이터베이스로 전환하기만 하면 됩니다. 

> use mongotestdb

 

test> use mongotestdb
switched to db mongotestdb
mongotestdb>

MongoDB에서 컬렉션 만들기
SQL 데이터베이스에서 컬렉션은 테이블과 유사합니다. 여기서 아래 나열된 명령을 사용하여 적절한 데이터베이스에 테이블을 작성할 수 있습니다:

mongotestdb> db.employeedetails.insertOne(
...    {F_Name: "John",
...     L_NAME: "Doe",
...     ID_NO: "23245",
...      AGE: "25",
...      TEL: "63365467666"
...    }
... )
{
  acknowledged: true,
  insertedId: ObjectId("63efa5566803d64742e9d86d")
}
> show collections
employeedetails

오늘도 잘 배웠다 . 

반응형