상똥이의 Back-End 공부방

[Board Project] 4. 데이터베이스 연동하기 (MySQL/ JPA) 본문

프로젝트/게시판 만들기

[Board Project] 4. 데이터베이스 연동하기 (MySQL/ JPA)

상똥백 2023. 9. 5. 20:10

목차

0. MySQL Community가 설치되어있어야 한다

1. 프로젝트에 DataSource를 추가

2. 프로젝트용 데이터베이스를 생성

3. properties 작성하기

 

[1. 프로젝트에 Data source 추가하기]

1. intelliJ화면 왼쪽 위 view → Tool windows → Database → +(New) → MySQL

 

2. Data source properties 설정

 (1) Name : @localhost

 (2) Coment : local db

 (3) Host : localHost

 (4) Port : 3306

 (5) Password : MySQL설치시 지정한 비밀번호 입력, 없다면 <hidden>상태로 두기

 (6) User : root

 

3. 아래 Test Connection을 클릭해 연결되는지 확인

4. OK눌러 생성

 

[2. 프로젝트용 데이터베이스 생성하기]

1. 위의 4번까지 완료되면 뜨는 console 창에서 데이터베이스를 생성한다

 - create database board; 를 입력해 board라는 이름의 데이터베이스를 생성한다.

 - show databases;를 입력해 생성 확인

 

2. user계정 만들기

 - 콘솔창에 아래와 같이 입력해 사용자 생성

 - 생성된 사용자 확인하기

create user '아이디'@'localhost' identified by '비밀번호';
select user from mysql.user;

sangddong 이라는 사용자가 생성되었다

 

3. 권한 부여하기

 - 생성된 사용자에게 부여된 권한을 확인하는 코드를 입력하여 실행시키면 부여된 권한이 없다는 경고창이 뜬다

show grants for '아이디'@'localhost';

 - 아래와 같이 모든 권한을 부여하는 코드를 입력한 후 다시 권한을 확인한다

show grants for '아이디'@'localhost';
grant all privileges on 테이블명.컬럼명 to '아이디'@'localhost';
flush privileges;

 

4. 데이터베이스 board로 바꾸기

- board데이터베이스를 생성했으므로 처음 추가한 data source의 properties에서 database란에 board를 적어준다

 

[3. properties 작성]

1. resources 파일 내에 생성된 application .yaml에 아래의 내용을 입력한다

(원래는 properties 파일인데 yaml로 변경함)

debug: false
management.endpoints.web.exposure.include: "*"

logging:
  level:
    com.fastcampus.projectboard: debug
    org.springframework.web.servlet: debug
    org.hibernate.type.descriptor.sql.BasicBinder: trace

spring:
  datasource:
    url: "jdbc:mysql://localhost:3306/board"
    username: "sangddong"
    password: "testPW" //코드 안에 패스워드가 노출되는 것은 심각한 보안 문제이나, 일단 후에 수정하기로 한다
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    defer-datasource-initialization: true
    hibernate.ddl-auto: create
    show-sql: true
    properties:
      hibernate.format_sql: true
      hibernate.default_batch_fetch_size: 100
  h2.console.enabled: true
  sql.init.mode: always