# 개요

학원 다니면서 개인 프로젝트로 플래너 개발을 해보기로 했다.

처음에는 타이머로 시작했다가 내가 생각했던 방향이 아닌거 같아서 플래너로 바꿨다.

처음에 타이머로 생각한 이유는 단순히 뽀모도로 타이머(https://chromewebstore.google.com/detail/focus-to-do-%EB%BD%80%EB%AA%A8%EB%8F%84%EB%A1%9C-%ED%83%80%EC%9D%B4%EB%A8%B8-+-%EC%97%85%EB%AC%B4/ngceodoilcgpmkijopinlkmohnfifjfb?pli=1)를 개발하려고 했기 때문인데.. 코드 작성하다보니 타이머가 돌아가는 로직은 프론트에서 간단하게 처리 할 수 있다고 생각했기 때문이다.

원래는 프로젝트 개발진행하면서 블로그도 같이 쓰려고했는데, 개발 중간에서야 작성하게 됐다 ㅎㅎ;

데이터베이스(Mysql)을 추가하고 프로젝트와 연결하는 과정

 


 

# EC2에 데이터 베이스(Mysql) 설치

데이터베이스는 학원에서 오라클을 배웠지만, Mysql을 사용하기로 했다. Mysql을 선택한 이유는

  • 내 로컬(노트북)에는 데이터베이스 프로그램이 설치되어 있지 않은데 굳이 설치하고 싶지 않았다. 그렇다면 어떤 원격의 데이터베이스를 이용해야 한다.
    1. 학원 컴퓨터를 항상 켜 놓은 상태로 두고 원격 데스크톱 연결을 통해 노트북에서 학원 컴퓨터로 접속해서 개발을 진행 → 학원 공유기를 포트 포워딩 해야하는데 공유기 비밀번호를 모르기 때문에... 패스
    2. 내장 데이터베이스인 H2를 사용 → 기왕 사용하는거 데이터베이스 설치해서 사용하자라는 생각으로.. 패스
    3. 옛날에 AWS를 사용해봤으니까 복습한다는 생각으로 EC2 인스턴스에 데이터베이스를 설치하여 사용하는 것으로 결정!
  • 오라클을 설치하는 과정이 꽤나 복잡해서 Mysql을 선택했다. (근데 Mysql도 생각보다 복잡하더라..)
    • RDS라는 서비스도 있긴 했는데 사용해본적이 없어서 우선 EC2에 설치해서 사용해보다가 RDS도 사용 해보기로..

EC2에 Mysql 설치하는 과정

 

[AWS] EC2에 DB설치

# 개요 생성한 EC2에 Database(Mysql)을 설치해보자 학원에서는 Oracle을 사용하긴 했는데, 찾아보니 Linux에 Oracle설치하는게 꽤 복잡해서 그냥 Mysql로 진행하기로 했다. 근데 AWS RDS라는 데이터베이스 서

jino-dev-diary.tistory.com

 


 

# 내 프로젝트와 연결, CRUD 기능 구현

Mysql jdbc인 Mysql Connector를 통해 EC2에 설치된 Mysql과 연결했다.

그 과정에서 기존에 Controller의 List에 저장했던 Plan 객체들을 Database에 저장하도록 수정했다.

CRUD 기능에 대한 메서드를 구현했는데 Connection을 생성하는 부분이 중복되어서 JdbcTemplate에 데이터베이스와 연결하는 코드를 분리하여 작성하였다.

Connection 이후 PreparedStatement를 이용해서 Query에 객체 필드들을 매핑해주고 executeUpdate()(CUD) / executeQuery() (R)을 통해 쿼리를 실행했다.

이후 필요에 따라 데이터베이스 row를 자바 Object로 매핑 후 반환했다.

 

Add Feature: connect to Mysql Database · JinHoooooou/MiniTimer@8f53d07

JinHoooooou committed Feb 7, 2024

github.com

 


 

# 간단 회고

저 커밋 하나에 내용이 너무 많아서 여전히 읽기 힘들다 ㅜㅜ 커밋 작게하는 습관을 들여야하는데 생각보다 쉽지않다

database 연결할 때 접속 계정과 패스워드가 필요한데, Github에 올릴 때는 그걸 빼고 올려야 하는데 같이 올려버렸다... 이번 경우에는 EC2 인스턴스를 중지 후 재시작 함으로써 hostname이 변경 되었기 때문에 크게 상관 없겠지만 이런 정보는 별도의 파일로 만들어서 .gitignore에 해당 파일을 추가하거나 환경 변수로 구성하는 방법으로 보완해야겠다는 생각이 들었다.

# 개요

생성한 EC2에 Database(Mysql)을 설치해보자

학원에서는 Oracle을 사용하긴 했는데, 찾아보니 Linux에 Oracle설치하는게 꽤 복잡해서 그냥 Mysql로 진행하기로 했다.

근데 AWS RDS라는 데이터베이스 서비스도 있더라. 이것도 나중에 사용해보자. 지금은 관련 내용은 작성하지 않겠다.

 


# EC2 접속

참고하자.

 

[AWS] EC2 프리티어 사용 후기

# 개요 학원에서 JDBC를 이용하여 데이터베이스 연동하는 법을 배웠다. 개인 프로젝트에 데이터베이스를 연동하는 과정에서 문제가 발생했다. 학원 로컬에는 데이터베이스(Oracle)이 설치되어 있

jino-dev-diary.tistory.com

 


# Mysql 설치

dnf search mysql

sudo dnf update

sudo wget https://dev.mysql.com/get/mysql80-community-release-el9-4.noarch.rpm

sudo dnf install mysql80-community-release-el9-4.noarch.rpm

sudo dnf install mysql-community-server

너무 길어서 생략..

설치 확인 (mysql -V)

 


# Mysql 실행

sudo systemctl start mysqld

sudo systemctl enable mysqld

systemctl status mysqld

 

# Mysql 계정 생성 및 권한 부여

sudo grep temporary password /var/log/mysqld.log

비밀번호로 root 계정 접속

mysql -u root -p

임시 비밀번호 변경

alter user 'user'@'localhost' identified by '{바꿀 비밀번호}';

사용자 계정 생성

create user '{계정명}'@'%' identified by '{비밀번호}';

생성한 사용자 계정에 권한 부여

grant all privileges on *.* to {계정명}@'%';

 


# Mysql 사용

사용자 계정으로 접속

mysql -u '{계정명}' -p

 

스키마(데이터베이스)생성 및 사용

create database {데이터베이스_이름} / use {데이터베이스_이름}

 


# Reference

https://cloudkatha.com/how-to-install-mysql-8-on-amazon-linux-2023/

 

How to Install MySQL 8 on Amazon Linux 2023 - CloudKatha

guide, we talked about How to Install MySQL 8 on Amazon Linux 2023 Instance. We saw that MySQL 8 is not available in the core repository of

cloudkatha.com

https://velog.io/@ejayjeon/MYSQL-1.-계정-생성-권한-부여

 

[MYSQL] 1. 계정 생성 / 권한 부여

<small style="color: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER

velog.io

 

'DevOps' 카테고리의 다른 글

[AWS] EC2에 자바 웹 서버 실행  (1) 2024.02.24
[AWS] EC2 프리티어 사용 일지  (1) 2024.02.17

+ Recent posts