IntelliJ Community 무료버전에서 MySQL 연동하는 방법
그리고 Workbench 사용하는 방법 알아보기
➡️ STEP 01. 프로젝트 생성하기 (아래에 링크한 블로그에서 설명)
MySQL 설치 및 환경변수 설정이 완료되었다는 가정 하에 설명하는 글입니다.
사용할 IDE부터 프레임워크 등등 선택의 폭이 넓기 때문에 이번 글에서는 다루지 않았으나,
만약 저처럼 IntelliJ Community (무료) 버전을 사용하여 Spring Boot 프로젝트를 만들고자 한다면 아래를 참고해주세요.
환경설정 : 스프링 이니셜라이저 사용방법 : IntelliJ Community, Spring Boot, Spring Initializr, MySQL (1) 인텔
IntelliJ Community 버전(무료)에서Spring Initializr 이용해서Spring Boot 환경 설정하는 방법 알아보기 ➡️ STEP 01. 다운로드 받을 Initializer 설정하기Dependencies에 관한 내용은 이후 단계에서 다루었습니
meitner.tistory.com
이번 글은 앞선 단계에서 스프링부트에 내장된 인메모리 데이터베이스가 아닌 별도의 데이터베이스 서버를 사용하고 싶은 경우, 스프링부트 프로젝트에 MySQL과 같은 추가 데이터베이스를 연동하는 방법을 기록해두려고 합니다.
➡️ STEP 02. 데이터베이스 생성하기 (여기서부터 이번 글!)
프로젝트에 따라 하나가 아닐 수도 있으며 개발하고자 하는 프로젝트에 필요한 데이터베이스(들)을 생성하는 단계이다.
✅ 1) MySQL Command Line Client 또는 CMD 창에서 mysql에 접속하자.
CF. CMD(터미널 창)에서 MySQL 접속하는 방법
MySQL : 터미널 창에서 접속하는 방법 및 비밀번호 찾기, 그리고 데이터베이스 생성부터 삭제까지
➡️ MySQL 접속하기MySQL 설치 및 환경변수 설정이 완료되었다는 가정 하에 설명하는 글입니다. 1. 터미널 창에서 MySQL 설치 여부를 확인해보자. 만약 버전에 대한 정보가 나온다면 정상적으로
meitner.tistory.com

✅ 2) 개발에 이용할 데이터베이스를 생성하고 조회하여 성공적으로 만들어졌는지 확인한다.

✅ 3) MyWorkbench에서 방금 전 생성한 데이터베이스에 관한 Connection 생성 및 연결한다. Connection Name을 작성하고 OK 버튼을 누르기 전, Test Connection을 눌러 정상적으로 연결되는지부터 확인하자. 그러면 shopeasy라는 새로운 데이터베이스 연결이 생성된 것을 확인할 수 있다.


✅ 4) 생성된 연결을 더블클릭하여 mysql 비밀번호를 입력하면 아래의 화면을 볼 수 있다. 이제 여기서 모든 데이터베이스 관련 작업을 편리하게 진행하자.

➡️ STEP 03. 프로젝트에 데이터베이스 연동하기
✅ 1) 인텔리제이 build.gradle에 아래와 같이 MySQL 사용을 위한 의존성을 주입해주어야 한다. 이는 아래와 같이 직접 입력해주어도 되고 초기 환경설정에서 Spring Initializr를 사용할 당시 Dependencies로 MySQL Driver를 선택하면 자동으로 입력되는 방법도 있다. 후자의 자세한 방법 이 글의 가장 위 STEP01에 삽입된 링크에 있으니 참고 바란다.
runtimeOnly 'mysql:mysql-connector-java'
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.2'
id 'io.spring.dependency-management' version '1.1.6'
}
group = 'com.eojin'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
✅ 2) 이제 인텔리제이에서 MySQL 연동을 위한 작업을 해보자. IntelliJ Ultimate 버전을 사용한다면 편리하게 Database Tool을 사용하면 되지만, 우리 글에서는 IntelliJ Community 버전을 사용하기 때문에 우측에 database 란이 보이지 않을 것이다.

✅ 2) 만약 VIEW에서 찾을 수 없다면, 아래에서 INSTALL 버튼을 눌러 IDE RESTART까지 눌러 설치해주자. Community 버전이라.. 아쉬운 대로 Database Browser를 사용할 수 있다. 이 창은 좌측에서 볼 수 있다.

✅ 3) 좌측의 DB Browser에서 + 버튼을 눌러 MySQL(본인이 사용하는 데이터베이스)을 선택하자.

✅ 4) 아래와 같이 본인의 프로젝트에 맞도록 작성한 후 OK 버튼을 누르자.

✅ 5) application.properties에 아래와 같이 입력하고 애플리케이션 실행해보자.
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/데이터베이스명?
spring.datasource.username=사용자명
spring.datasource.password=비밀번호
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/shopeasy?
spring.datasource.username=root
spring.datasource.password=1234
✅ 6) 만약에 SQL 파일을 resources 하위에 두는 방식으로 더미데이터를 만든다면, create table에서 아래와 같은 에러가 발생할 수 있다. 이럴 땐 기존에 설치했던 DB Browser를 삭제해주면 해결된다.
Invalid or incomplete statement expected one of the following: BITMAP CONTEXT DIRECTORY EDITIONABLE EDITIONING FORCE FUNCTION INDEX LIBRARY MATERIALIZED MULTIVALUE NO NONEDITIONABLE OR PACKAGE PROCEDURE PUBLIC ROLE SEQUENCE SYNONYM TRIGGER TYPE UNIQUE USER VIEW identifier
➡️ STEP 04. Workbench 사용하기
✅ 1) STEP 02에서 생성해둔 MySQL Connections에 들어가기 (비밀번호 입력 후 Save 체크박스 눌러두면 편리)

✅ 2) 사용하는 데이터베이스(스키마)명을 입력한 후, 테이블 생성부터 본인 프로젝트에 필요한 SQL문을 명령하면 된다.
use 데이터베이스(스키마)명;

CF. MySQL : 명령어 요점정리 (조회, 생성, 삭제)
MySQL : 명령어 요점정리 (조회, 생성, 삭제)
➡️ MySQL 명령어 (데이터베이스 조회부터 데이터 삽입까지) ✅ 데이터베이스 조회show databases; ✅ 데이터베이스/테이블 생성create table 테이블명 (컬럼명 데이터타입(크기), 컬럼명 데이터타입(
meitner.tistory.com
➡️ STEP 05. 민감한 정보 분리를 위해 Runtime 환경변수 설정하는 방법
데이터베이스 주소, 사용자명, 비밀번호, JWT 정보와 같은 개인 정보를 Local 환경에서 실행시킬 때에만 입력되도록 만드는 방법입니다.
1) application.properies에 아래 중 필요한 코드 입력 (EX. url: username: root, password: 1234)
spring.datasource.url=${DS_URL}
spring.datasource.username=${DS_USERNAME}
spring.datasource.password=${DS_PASSWORD}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
#spring.jpa.properties.hibernate.show_sql=true
#spring.jpa.properties.hibernate.format_sql=true
#spring.jpa.properties.hibernate.use_sql_comments=true
jwt.secret.key=${JWT_SECRET_KEY}
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=10MB
cloud.aws.credentials.access-key=${AWS_S3_ACCESS_KEY}
cloud.aws.credentials.secret-key=${AWS_S3_SECRET_KEY}
cloud.aws.region.static=ap-northeast-2
cloud.aws.stack.auto=false
cloud.aws.s3.bucket=dtogram
2) 인텔리제이 실행 버튼 좌측 토클에서 edit configuration 클릭하면 아래 창 확인 가능합니다. + 버튼 클릭 후 Application 클릭해주세요.


3) Build and Run에 cp를 ~main으로 선택한 후 ~~Application.java(메인클래스)가 자동입력되어 있는지 확인 후, 없다면 오른쪽 선택 버튼을 클릭하여 Choose Main Class 창에 들어가, 본인의 메인 클래스를 선택해주세요.


4) Environment variables의 오른쪽 선택 버튼을 클릭하여 환경변수 정보를 넣어주세요. Environment Variables 영역이 보이지 않는다면 Modify options 를 클릭해 Add VM options 와 Environment variables를 추가하시면 됩니다.


➡️ ISSUE 01. 실행했는데 Failed to configure a DataSource 와 같은 에러가 발생한다면?
*************************** APPLICATION FAILED TO START ***************************
Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
https://meitner.tistory.com/entry/Failed-to-configure-a-DataSource
MySQL : Failed to configure a DataSource : 데이터베이스 연결 실패 이슈 해결방법
프로젝트 실행 과정에서 Failed to configure a DataSource 이슈 발생 시 해결하는 방법 알아보기 ➡️ 이슈 발생 나 같은 경우, IntelliJ Community 버전에서 SpringBoot 환경설정을 하기 위해 Spring Initializer를 다
meitner.tistory.com
➡️ ISSUE 02. 실행했는데 Error creating bean with name 'dataSourceScriptDatabaseInitializer 에러가 발생한다면?
(생략) [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception with message: Cannot load driver class: JDBC????? at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) ~[spring-beans-6.1.4.jar:6.1.4] at (생략)
at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName(DataSourceProperties.java:175) ~[spring-boot-autoconfigure-3.2.3.jar:3.2.3] at (생략)
Cannot load driver class: JDBC?????
JDBC 드라이버 클래스를 로드할 수 없다는 메시지이다. 이는 데이터베이스 연결에 필요한 JDBC 드라이버가 올바르게 구성되지 않았거나, 클래스 경로에 적절한 드라이버 JAR 파일이 없을 가능성이 높다.
org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName
데이터 소스 프로퍼티에서 드라이버 클래스 이름을 결정하는 도중에 발생한 예외입니다. 이는 어플리케이션이 데이터베이스 연결을 구성하는 중에 문제가 있음을 나타냅니다.
➡️ 참고자료
[블로그]
https://victorydntmd.tistory.com/321
https://engineerinsight.tistory.com/71
[깃허브]
'Backend Basic > Database' 카테고리의 다른 글
MySQL : 더미 데이터 만드는 방법 (data.sql, application.properties) (0) | 2024.08.09 |
---|---|
MySQL : 프론트엔드 환경설정 (Visual Studio) (0) | 2024.07.31 |
MySQL : 명령어 요점정리 (조회, 생성, 삭제) (0) | 2024.05.23 |
MySQL : 터미널 창에서 접속하는 방법 (0) | 2024.03.20 |