728x90
1. Docker에서 MySQL 실행
docker run -d
-p 3307:3306
-e MYSQL_ROOT_PASSWORD=1234
-e MYSQL_DATABASE=db
-e MYSQL_USER=user
-e MYSQL_PASSWORD=1234
-v /Users/byeonggilpark/Desktop/db:/var/lib/mysql
--name mysql
mysql:5.7
--character-set-server=utf8
--collation-server=utf8_unicode_ci
자세한 옵션들은 docker 공식 홈페이지의 mysql에서 확인 가능합니다
-d
: 백그라운드에서 실행-p
: 포트 설정-e
: 환경변수 설정-v
: 볼륨 설정 (mysql의 데이터 저장소 설정)-name
: 컨테이너 이름 설정
docker log mysql
로 volume(mysql 데이터가 저장된 위치) 위치 확인 가능
"Mounts": [
{
"Type": "bind",
// 로컬 볼륨 위치
"Source": "/Users/byeonggilpark/Desktop/db",
// 컨테이너 볼륨 위치
"Destination": "/var/lib/mysql",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
2. 스프링부트 MySQL 설정
application.yml
spring.datasource.url: jdbc:mysql://localhost:3307/db?useSSL=false&serverTimezone=UTC
spring.datasource.driverClassName: com.mysql.cj.jdbc.Driver
spring.datasource.username: db
spring.datasource.password: 1234
spring.jpa.database-platform: org.hibernate.dialect.MySQL5Dialect
스프링부트를 실행하면 /Users/byeonggilpark/Desktop/db
위치에 mysql 데이터들이 존재함을 볼 수 있습니다.
번외
한글설정
etc/mysql/my.cnf
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
init_connect=SET
collation_connection=utf8_general_ci
init_connect=SET NAMES utf8
[mysql]
default-character-set=utf8
- mysql 재시작
service mysql restart
- 기존 깨진 데이터 한글 변경
ALTER TABLE table_name convert to charset utf8;
728x90