Search
💿

MySQL 초기 설정(feat. Docker)

1. Docker로 MySQL을 설치하는 이유

가. 로컬환경을 깨끗하게 유지하기 위해

로컬 환경에 DBMS를 직접 설치시 로컬환경에서 DB 사용에 따라 잔류한 데이터를 완전히 삭제하기 힘들다
가상환경 위에 DBMS를 설치한다면 해당 가상환경을 삭제하면서 관련 데이터도 함께 간편하게 삭제할 수 있음

나. 가상환경으로 Docker를 선택한 이유

VM 기반의 리눅스 등에 DBMS를 설치할 수 있지만 Docker가 더 가볍고 사용하기 편리함

2. 설치 가이드

가상 환경을 위해서 docker를 설치한다.
docker 기반으로 mysql server 5.7 버전을 설치한다.
docker 명령으로 mysql 컨테이너를 실행한다.
docker 명령으로 mysql 컨테이너에 bash로 접속한다.
셀 환경변수와 locale 설정을 하고, mysql config를 latin1에서 utf8로 변경한다.
Database 이름을 정하고 Database를 생성한다.
DB에 프로그램에서 연결할 User를 정하고 생성한다. 접속 권한을 설정한다.

3. 설치 과정

가. 도커설치

공식 웹사이트에서 desktop version 다운로드 및 설치
정상 설치 확인 명령어: docker --version

가-1. Ubuntu 도커 설치

Ubuntu 20.04 LTS 기준
필요한 패키지 설치
sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
Shell
복사
docker offical GPG 키 등록: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
stable repository 설정: echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker Engine 설치:
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io

나. mysql server 5.7 버전 이미지 다운로드

설치 명령어: docker pull mysql:5.7
m1 arm 프로세서 기반 OS의 설치 및 실행 명령: docker run --rm --platform linux/amd64 -it mysql:5.7
버전을 명시하지 않으면 자동으로 최신버전을 설치함
이미지 정상 다운로드 확인 명령어: docker images

다. mysql 컨테이너 실행

컨테이너 실행 및 mysql 환경변수 변경 명령어 포함
docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=password --name mysql_docker_test1 mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
Shell
복사
→ 컨테이너 실행 명령어: docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=password --name mysql_docker mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
→ 환경변수 변경 명령어: -character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
→ mysql config 설정 변경 latin1 → utf8
→ mysql에서 한글작업할 수 있도록 인코딩 설정 변경
(m1 arm) 환경에서 컨테이너 실행 명령
docker run --platform linux/amd64 \ -p 3309:3306 \ --name mysql-django \ -e MYSQL_ROOT_PASSWORD=password \ -e MYSQL_DATABASE=mysql \ -e MYSQL_USER=tester \ -e MYSQL_PASSWORD=password \ -d mysql:5.7
Shell
복사
컨테이너 정상 동작 확인 명령어: docker ps -a
→ status에 up이라고 표시되야 정상 동작
→ run 명령어는 컨테이너 create 과 run을 동시 수행

라. mysql 컨테이너에 bash로 접속

bash 접속 명령어: docker exec -i -t mysql_docker bash
mysql 접속 명령어: mysql -u root -p
password: password

마. mysql sever mysql client 정상 통신 확인

mysql workbench에서 mysql server로 test connection 시도
→ 포트 맵핑 상태 점검

바. mysql User 생성 및 권한 부여

mysql> CREATE USER 'tester'@'%' IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON *.* TO 'tester'@'%'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> quit 출처: https://jang8584.tistory.com/267 [개발자의 길]
SQL
복사
생성한 User로 server 접속
→ 포트맵핑을 3309:3306로 했기 때문에 아래 스크린샷처럼 포트번호를 3309로 지정해야 함

사. Database 생성

CREATE SCHEMA `farmsplan4`;
JavaScript
복사

4. mysql client library 설치

JDBC 활용하여 java mysql-server 연동
package MJ.JavaBasic.pc_manager; import com.mysql.jdbc.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBConnector { public static void main(String args[]) { Connection con = null; String server = "127.0.0.1:3309"; // MySQL 서버 주소 String database = ""; // MySQL DATABASE 이름 String user_name = "MJ"; // MySQL 서버 아이디 String password = "password"; // MySQL 서버 비밀번호 // 1.드라이버 로딩 try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { System.err.println(" !! <JDBC 오류> Driver load 오류: " + e.getMessage()); e.printStackTrace(); } // 2.연결 try { con = (Connection) DriverManager.getConnection("jdbc:mysql://" + server + "/" + database + "?useSSL=false", user_name, password); System.out.println("정상적으로 연결되었습니다."); } catch (SQLException e) { System.err.println("con 오류:" + e.getMessage()); e.printStackTrace(); } // 3.해제 try { if (con != null) con.close(); } catch (SQLException ignored) { } } }
SQL
복사

5. 에러 해결

가. mysql sever mysql client test connection 실패

현상
원인
문제원인 해결
결과

Reference

MySQL Connector 세팅, https://whitepaek.tistory.com/18
우분투 도커 설치, https://shanepark.tistory.com/237