다가오는 다음을 향해
[Docker Mac] MySQL Community Server container 실행하기 본문
💡 MySQL Community Server container 실행 및 설정 방법 입니다.
▼ 목차
☘️ MySQL 컨테이너(container) 실행
☘️ MySQL Community Server 설정
☘️ MySQL container root 권한으로 접속하기
☘️ MySQL Community Server 설정
- MySQL root 접속
- root 비밀번호 변경
- 계정 추가, 권한 부여, 변경사항 반영
☘️ application.yml 수정
☘️ MySQL Workbench 연결
☘️ 프로젝트 Test
▼ 개발환경
MacBook Pro M1
### Programming language - java-1.8
### Framework
- Spring Framework : SpringBoot 2.7.3
- Persistence Framework : JPA - Hibernate
### Build Tool
- gradle 7.5
### WAS
- 내장 Tomcat
### DB
- MySql - 8.0.30
### IDE
- IntelliJ IDEA (Ultimate Apple Silicon 2022-02)
### Library
- Lombok - 1.18.24
🌱 사전준비
📌 Docker 회원가입 https://hub.docker.com/
📌 Docker Desktop (Mac) 설치 https://tira-0.tistory.com/218
☘️ MySQL container 실행
도커 허브 공식 이미지는 내려받지 않아도 컨테이너 실행 시 자동으로 내려받을 수 있습니다.
$ docker run -d -p 3309:3306 \
-e MYSQL_ALLOW_EMPTY_PASSWORD=true \
--name mysql \
mysql:8.0.30
- -p 3309:3306 : <컨테이너 포트번호>:<서버 포트번호> - 컨테이너 포트 번호는 외부에서 접속할 때 노출되는 포트번호 입니다.
- -e MYSQL_ALLOW_EMPTY_PASSWORD=true : 비밀번호 없이 root 계정으로 접속 할 수 있습니다.
- mysql:8.0.30 → 최신 MySQL 버전으로 설치해야합니다.
[MySQL 8.0.30 이미지 내려받기(Image pull) 및 컨테이너(container) 실행(run)]
# 이미지 조회
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0.30 5e229524f286 11 days ago 494MB
# 실행중인 컨테이너 조회
$ docker ps
☘️ MySQL container root 권한으로 접속하기
💡 컨테이너 root 권한 접속 방법은 <CONTAINER ID> 와 <CONTAINER NAMES> 2가지 방법이 있습니다.
📌 MySQL container 의 <CONTAINER ID> 와 <CONTAINER NAMES> 조회
# 실행중인 컨테이너 조회
$ docker ps
[실행중인 컨테이너 조회 결과 화면]
📌 MySQL container root 접속방법
1. < CONTAINER ID >로 접속
$ docker exec -it --user root <CONTAINER ID> bash
❯ docker exex -it --user root bcc69c86049e bash
bash-4.4#
2. < CONTAINER NAMES > 로 접속
$ docker exec -it --user root <CONTAINER NAMES> bash
❯ docker exec -it --user root mysql bash
bash-4.4#
☘️ MySQL Community Server 설정
📌 MySQL Community Server - root 접속
#MySQL Community server root로 접속
$ mysql -uroot
- -e MYSQL_ALLOW_EMPTY_PASSWORD=true : 비밀번호 없이 root 계정으로 접속 할 수 있습니다.
[MySQL Community server root로 접속 성공 화면]
📌 root 비밀번호 변경
alter user 'root'@'localhost' identified by '비밀번호';
- root 계정 비밀번호가 없기 때문에 설정합니다.
[root 계정 비밀번호 변경 쿼리 실행 결과]
📌 root 권한조회
select host,user,authentication_string from mysql.user;
[권한 조회 쿼리 실행 결과]
- root 계정에 부여된 권한이 없는걸 확인했습니다.
📌 계정 추가, 권한 부여, 변경사항 반영
- '%'는 외부접속을 허용합니다.
- docker의 기본 gateway는 172.17.0.1로 설정되어 있습니다.
- 도커 ID로 접속하기 위해 172.17.0.1 계정을 생성합니다.
# 계정 생성
CREATE USER 'id'@'localhost' IDENTIFIED BY 'password';
CREATE USER 'id'@'%' IDENTIFIED BY 'password'; // 외부접속을 허용합니다.
CREATE USER 'admin'@'172.17.0.1' IDENTIFIED BY 'password'; // 도커 기본 gateway
# 권한 부여
grant all privileges on *.* to 'admin'@'localhost';
grant all privileges on *.* to 'admin'@'%';
grant all privileges on *.* to 'admin'@'172.17.0.1';
# 변경사항 반영
flush privileges;
# 권한 조회
select host,user,authentication_string from mysql.user;
[쿼리 실행 결과]
권한 조회를 합니다.
select host,user,authentication_string from mysql.user;
[권한 조회 쿼리 실행 결과]
※% 계정이 이상하게 표기되어 다시 만들었습니다.
# 사용자 삭제 쿼리
drop user 'admin'@'%';
다시 계정 생성, 권한부여, 변경사항 반영 후 권한 조회를 했습니다.
% <- 로 잘 조회됩니다.
설정이 끝났으니 MySQL Community Server 빠져 나갑니다.
# MySQL Community Server 빠져 나가기
quit;
☘️ MySQL Workbench 연결
💡도커 컨테이너로 실행한 MySQL Community Server와 연결되는지 확인 합니다.
MySQL workbench 좌측 상단 [Database] - [Manage Connections ..] 를 클릭합니다.
좌측 하단 [New] 를 클릭합니다.
아래 내용을 입력합니다.
- Connection Name : 연결 이름을 입력합니다.
- Hostname : IP는 127.0.0.1 을 입력합니다.
- Port : 포트번호는 3309를 입력합니다.
- Username: 추가한 사용자 아이디를 입력합니다.
- 사용자 비밀번호를 입력한 후 OK를 클릭합니다.
우측 하단 [Test Connection]을 클릭합니다.
[연결 성공 팝업]
연결완료 후 Workbench에 접속할 수 있는 화면이 추가됩니다.
CREATE DATABASE `myliket3`;
use myliket3;
스키마를 생성합니다.
제 프로젝트는 JPA 라 없는 테이블은 자동생성하여 스키마만 생성했습니다.
프로젝트 Test
💡 application.yml 의 MySQL 설정 수정 후 local 환경에서 실행되는지 확인 합니다.
📌 application.yml 수정
# DB Source URL
spring.datasource.url=jdbc:mysql://127.0.0.1:3309/myliket3?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&defaultFetchSize=1000&useSSL=false&allowPublicKeyRetrieval=true
# DB username
spring.datasource.username=[MySQL 사용자 아이디]
# DB password
spring.datasource.password=[MySQL 사용자 비밀번호]
프로젝트를 실행합니다.
[프로젝트 실행 화면]
정상적으로 연결 성공하여 table까지 생성된 걸 확인할 수 있습니다.
'Server > Docker' 카테고리의 다른 글
[Docker Mac] Jib로 이미지 빌드하여 도커 서비스 배포하기( jar 파일) (0) | 2022.09.26 |
---|---|
[Docker Mac] Jib 로 이미지 올리기(image push) (0) | 2022.09.26 |
[Docker] 도커파일(Dockerfile)로 이미지 빌드하기 - Jar (1) | 2022.09.26 |
[Docker] 도커 허브 레포지토리(Docker Hub Repository)만들기, 삭제하기, 이미지(image) 올리기 (0) | 2022.09.26 |
[Docker Mac] Docker Desktop 설치 및 삭제 (M1/애플 실리콘) (1) | 2022.09.26 |