ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MongoDB install (linux - centos)
    개발 설치 2023. 5. 3. 17:04
    728x90

    리눅스에 몽고db를 설치할 일이 생겼다.

    (docker를 사용하지 않고 직접 설치) 

     

    리눅스 환경

    centos7(64bit)

     

    몽고db 버전

    지원 버전

    엔터프라이즈 버전까지는 필요가 없으니 커뮤니티(무료 버전)을 설치한다. : v6.0

    설치하기

    https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-red-hat/

     

    Install MongoDB Community Edition on Red Hat or CentOS — MongoDB Manual

    Docs Home → MongoDB Manual MongoDB AtlasMongoDB Atlas is a hosted MongoDB service option in the cloud which requires no installation overhead and offers a free tier to get started.Use this tutorial to install MongoDB 6.0 Community Edition on Red Hat Ente

    www.mongodb.com

    몽고db 사이트에서 시키는데로 진행한다.

    1. yum repo 생성

    > vi /etc/yum.repos.d/mongodb-org-6.0.repo
    
    [mongodb-org-6.0]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc

    2. 설치

    > sudo yum install -y mongodb-org

    설치된 파일들을 보면  mongodb-mongosh가 같이 설치 된 것을 볼 수 있다.
    mongosh를 통해서 mongodb에 접속할수 있다.

    3. 몽고db 시작

    > sudo systemctl start mongod      # 시작
    > sudo systemctl status mongod   # 상태확인

    > sudo systemctl enable mongod   # 서버 재시작시 몽고db 자동 실행
    > sudo systemctl stop mongod       # 정지
    > sudo systemctl restart mongod    # 재시작

    4. 접속

    https://www.mongodb.com/docs/mongodb-shell/

     

    MongoDB Shell (mongosh) — MongoDB Shell

    Docs Home → MongoDB Shell The MongoDB Shell, mongosh, is a fully functional JavaScript and Node.js 16.x REPL environment for interacting with MongoDB deployments. You can use the MongoDB Shell to test queries and operations directly with your database.mo

    www.mongodb.com

    몽고db 6.0버전에서는 mongosh를 사용하면 접속이 된다.
    > mongosh     # 접속

    5. db 확인 / 이동

    > show dbs

      admin, config, local + 현재 접속중인 test db가 있다.
    > use newdb    # db이동 (없을 경우 암시적 생성)
    > show dbs

     

     

    6. 추가적인 부분

      - use <db> 명령어를 통해 db로 이동을 했어도 show dbs에는 db가 표시 되지 않는다. 

    > show dbs

    해당 이슈의 답변은 다음과 같다.
    https://jira.mongodb.org/browse/SERVER-18313

    Databases are created and exist after inserting the first document into a collection in the database. Databases and collections are created implicitly; however, creating a database or collection object in your client does not create a database or collection. use <db> does not create new database files.
     >> 요약
    미숙한 영어로 간단히 요약하면 첫 데이터가 들어올때까지 db와 collection은 암시적으로 생성된다. use 명령어는 새로운 db파일을 생성하지 않는다.


    데이터를 넣어주면 보인다.

     

      - mongosh로 접속하면 계속 메세지가 나온다.

    접속권한을 설정하라는 메세지이다.

    1. 유저 생성

    > use newdb
    > db.createUser(
      {
        user: "abc",
        pwd:  passwordPrompt(), 
        roles: [ { role: "readWrite", db: "newdb" }]
      }
    )
    > db.auth("abc", passwordPrompt())

    2. /etc/mongod.conf 수정

    #security:
    수정
    security:
      authorization: enabled

    수정 후 몽고db 재시작
    > systemctl restart mongod

    3. mongosh 확인

    mongosh로 접속시 위의 메세지가 사라졌고 show dbs와 같은 명령어의 사용이 불가능해졌다.

    4. 접속방법이 2가지 있다.
      - 접속할 때

      > mongosh --port 27017 -u "abc" --authenticationDatabase "newdb" -p

        show dbs 확인 결과 접속한 유저가 권한을 가진 db만 보여진다.

      - 접속 후

    > mongosh
    > use newdb
    > db.auth("abc", passwordPrompth())

    mongosh 만으로 접속하면 test로 연결이 되는데 여기서 db.auth()를 하면 인증이 안된다. 이유는 1. 유저 생성에서 유저를 생성할 때 newdb에서 했기 때문이다. newdb로 이동해서 인증을 하면 접속이 된다.

      - robo3t 같은 외부 툴에서 접속이 안된다.

    1. 방화벽을 열자
    # 방화벽에 열린 포트확인
    > firewall-cmd --zone=public --list-ports
    # 포트 영구 등록
    > firewall-cmd --permanent --add-port=27017/tcp
    # 방화벽 재시작
    > firewall-cmd --reload

    2.  /etc/mongod.conf 수정
    # 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으로 수정하면 외부 툴에서 접속이 될 것이다.
    # network interfaces
    net:
      port: 27017
      bindIp: 0.0.0.0​

    수정 후 몽고db 재시작
    > systemctl restart mongod

     

    ---------------

    참조

    https://www.mongodb.com/docs

    https://www.mongodb.com/docs/mongodb-shell/

    https://jira.mongodb.org/browse/SERVER-18313

    728x90
    반응형

    '개발 설치' 카테고리의 다른 글

    Rocky Linux 9 install  (0) 2024.01.12

    댓글

Designed by Tistory.