인프런 커뮤니티 질문&답변

joka님의 프로필 이미지
joka

작성한 질문수

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

18-ORM과 DB연동

강의로 들으시는 분들!)AWS Ubuntu에 PostgreSQL DB 설치&연동 + DBeaver로 연결

해결된 질문

작성

·

747

·

수정됨

4

강의로 듣는 사람들은 DB를 제공하지 않는다고 해서 저는 직접 DB를 만들어 실습을 해보고 싶어서 만들어 봤고 아마 저처럼 DB를 직접 만들어 실습하고 싶은 분들이 많을 것 같아서 공유합니다.

+EC2말고 RDS로 하면 더 쉽게 DB를 만들 수 있다고 하는데 따로 알아보셔도 좋을 것 같습니다.
+비용이 들 수도 있는데 이부분에 대해선 잘 모르겠습니다. 저도 조금 비용이 나가는데 투자한다치고 걍하는중

 

OS는 window10 입니다.

  1. PostgreSQL 설치를 위한 aws EC2 인스턴스 생성 - https://velog.io/@yun8565/AWS-EC2-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4-%EC%83%9D%EC%84%B1%ED%95%98%EA%B3%A0-%EC%9B%90%EA%B2%A9-%EC%A0%91%EC%86%8D%ED%95%98%EA%B8%B0
    * aws 계정 회원가입&로그인 해야합니다.
    * EC2(EC2 대시보드) > 인스턴스 시작 버튼으로 인스턴스 만들기
    * 다운받은 키페어파일(.pem 파일)은 'C:\Windows\System32' 이 경로에 넣어두시면 cmd에서 굳이 pem파일이 있는 경로로 갈 필요 없어서 편리합니다!

  2. Ubuntu에 PostgreSQL 설치 - https://velog.io/@yun8565/EC2-Ubuntu%EC%97%90-Postgresql-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0
    * \password 명령어로 password 입력할 때 입력한게 안보이는 것이 정상입니다! 입력하고 엔터 누르시면 됩니다!
    * 접속 확인 단락에 create user로 사용자 생성하고 생성한 user에 비밀번호를 설정하고 권한을 부여할 필요 없습니다! 그냥 기본 postgres 로 사용해도 됩니다.(이것 때문에 index.ts에서 username과 password에 기본으로 있는 postgres로 입력해야 할지 생성한 걸로 입력해야 할지 계속 접속 실패하고 한참 헤매서 ㅠ 인스턴스를 다시 만들고 저도 그냥 기본으로 진행했습니다.)
    * 사이트 처럼 pgAdmin4를 사용해도 되지만 강의와 똑같이 하고 싶으신 분들은 스킵하고 나중에 DBeaver 설치하고 연동하시면 됩니다!

ex) class_backend > index.ts

import { DataSource } from "typeorm";
import { Board } from "./Board.postgres";

const AppDataSource = new DataSource({
  type: "postgres",
  host: "**.**.***.**", // 내 인스턴스 우측 맨 위에 있는 퍼블릭 IPv4 주소
  port: 5432,
  username: "postgres", // 기본 계정?
  password: "******", // cmd에서 \password 명령어로 설정해준 비밀번호 입력
  database: "postgres",
  entities: [Board], // 우리가 만든 테이블 형태
  synchronize: true, // 동기화하다, 테이블 만들어 달라는 요청
  logging: true,
});

AppDataSource.initialize()
  .then(() => {
    console.log("DB접속 성공");
  })
  .catch((error) => {
    console.log("DB접속 실패");
    console.error("원인: ", error);
  });

 

[cmd로 내 ubuntu의 postgresql 다시 접속하는 법]

  1. AWS > EC2 > 내 인스턴트의 연결로 들어가 SSH 클라이언트 탭에서 밑에 '예:' 밑에 있는 코드를 CMD 에 입력(키페어파일 있는 경로에서)

  2. 2. 입력 후 sudo -u postgres psql 명령어 입력(종료할 땐 \q)

 

[정리]

  1. 인스턴스 생성 후 CMD 관리자권한으로 실행

     

  2. AWS > EC2 > 내 인스턴트의 연결로 들어가 SSH 클라이언트 탭에서 밑에 '예:' 밑에 있는 코드를 CMD 에 입력(다운받은 키페어가 있는 경로에서)하면 내 인스턴스에 연결됨(ssh -i ~ 로 시작하는 거, 위에 있는 건 할 필요 없음)

     

  3. 연결된 상태에서(최초 접속 시 sudo apt update 명령어로 패키지 목록 업데이트(왜하는진모름)) sudo -u postgres psql 명령어 입력하면 내 인스턴스에 설치된 PostgreSQL 에 접속(\q 입력하면 접속 종료, 그 외 명령어들은 검색해서 참고)

     

  4. 강의처럼 테이블 클래스 만들고 index.ts로 db 접속하는 로직 만들고 package.json에서 ts-node로 typescript 파일 실행할 수 있도록 만든 명령어로 실행(ex. yarn ti), console로 성공여부를 보여주도록 했고 실패하면 오타가 있거나 잘못 적은 것이 있을 것이다.

     

  5. PostgreSQL을 육안으로 더 편하게 보고 관리하기 위해 DBeaver를 설치하여 연결하고 확인해보기(DBeaver 연결도 index.ts에서 입력해준 것처럼 그대로 입력해주면 끝)

 

DBeaver 내 PostgreSQL에 연결하는 법 - https://www.sfdccode.com/95

 

답변 2

1

안녕하세요, 인프런 AI 인턴입니다. joka님께,

AWS 서비스 중 하나인 RDS를 활용하면 PostgreSQL 데이터베이스를 손쉽게 생성하고 관리할 수 있습니다. RDS는 운영체제나 데이터베이스 관리에 대한 부담을 줄여주는 매니지드 서비스로, AWS 콘솔을 통해서 간단하게 설정할 수 있습니다.

AWS에 데이터베이스를 생성할 때는 비용이 발생할 수 있으니, 무료 사용량 제한과 함께 각 서비스의 가격 정책을 확인하는 것이 중요합니다. 예를 들어, RDS는 프리 티어를 제공하여 일정 기간 또는 일정 사용량까지는 비용 없이 사용할 수 있으나, 넘어가게 되면 요금이 부과됩니다.

또한, EC2 인스턴스를 사용하여 직접 운영체제에 PostgreSQL을 설치하는 경우보다 RDS를 사용하면 데이터베이스 백업, 소프트웨어 패치, 스케일링 등의 관리 작업을 AWS가 대신 처리해주므로 편리합니다.

AWS RDS와 EC2의 차이점, 가격 정책, 그리고 각 서비스 설정 방법에 대해 공식 AWS 문서에서 자세한 정보를 제공하고 있습니다. 필요한 정보는 아래 링크에서 확인하실 수 있습니다.

EC2에서 PostgreSQL을 설치하고 사용하는 방법에 대한 자세한 지침은 사용자가 제공한 링크에서 확인해볼 수 있습니다. 이 지침을 따르면 PostgreSQL을 직접 설치하고 관리하는 데 필요한 단계를 이해하고 실행할 수 있겠네요.

추가적으로 TypeORM과 같은 ORM을 사용하여 Node.js 어플리케이션과 PostgreSQL을 연동하는 법이나, DBeaver와 같은 GUI 툴을 통해 데이터베이스를 관리하는 방법에 대해 관심이 있으시다면 해당 도구들의 공식 문서를 찾아보시는 것도 도움이 될 것입니다.

마지막으로, AWS를 사용하면서 발생할 수 있는 이슈나 궁금한 점이 있으시다면 AWS의 지원 포럼이나 커뮤니티에서 도움을 얻을 수도 있습니다.

0

노원두님의 프로필 이미지
노원두
지식공유자

안녕하세요! joka님!

스스로 시스템까지 구축하여 시도해 보는 열정이 정말 대단합니다!^^

그리고 공유하는 모습도 정말 멋진 것 같아요! 굉장히 빠른 성장이 기대됩니다!^^

joka님의 프로필 이미지
joka

작성한 질문수

질문하기