https://github.com/mjbae/mysql_sequelize
https://github.com/mjbae/mysql_sequelize
Last synced: over 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/mjbae/mysql_sequelize
- Owner: MJbae
- Created: 2020-11-28T08:31:43.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-01-30T08:05:03.000Z (over 5 years ago)
- Last Synced: 2025-02-01T20:45:22.397Z (over 1 year ago)
- Language: JavaScript
- Size: 104 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# MySQL_Sequelize
## 1. Docker로 MySQL을 설치하는 이유
### 가. 로컬환경을 깨끗하게 유지하기 위해
- 로컬 환경에 DBMS를 직접 설치시 로컬환경에서 DB 사용에 따라 잔류한 데이터를 완전히 삭제하기 힘들다
- 가상환경 위에 DBMS를 설치한다면 해당 가상환경을 삭제하면서 관련 데이터도 함께 간편하게 삭제할 수 있음
### 나. 가상환경으로 Docker를 선택한 이유
- VM 기반의 리눅스 등에 DBMS를 설치할 수 있지만 Docker가 더 가볍고 사용하기 편리함
## 2. 설치 요구사항
- 요구사항
## 3. 설치 과정
### 가. 도커설치
- 정상 설치 확인 명령어: docker --version
### 나. mysql server 5.7 버전 이미지 다운로드
- 설치 명령어: docker pull mysql:5.7
- 버전을 명시하지 않으면 자동으로 최신버전을 설치함
- 이미지 정상 다운로드 확인 명령어: docker images
### 다. mysql 컨테이너 실행
- 컨테이너 실행 및 mysql 환경변수 변경 명령어 포함
```docker
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
```
→ 컨테이너 실행 명령어: 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
→ 환경변수 변경 명령어: -character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
→ mysql config 설정 변경 latin1 → utf8
→ mysql에서 한글작업할 수 있도록 인코딩 설정 변경
- 컨테이너 정상 동작 확인 명령어: docker ps -a
→ status에 up이라고 표시되야 정상 동작
→ run 명령어는 컨테이너 create 과 run을 동시 수행
### 라. mysql 컨테이너에 bash로 접속
- bash 접속 명령어: docker exec -i -t mysql_docker_test1 bash
- mysql 접속 명령어: mysql -u root -p
### 마. mysql sever ↔ mysql client 정상 통신 확인
- mysql workbench에서 mysql server로 test connection 시도
→ 포트 맵핑 상태 점검
### 바. mysql User 생성 및 권한 부여
```sql
mysql> CREATE USER 'MJ'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'MJ'@'%';
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 [개발자의 길]
```
- 생성한 User로 server 접속

## 4. mysql client library 설치
- JDBC 활용하여 java mysql-server 연동
```sql
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(" !! 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) {
}
}
}
```
## 에러 해결
### 가. mysql sever ↔ mysql client test connection 실패
- 현상

- 원인

- 문제원인 해결

- 결과

## Reference
- 설치과정 전반, [https://www.hanumoka.net/2018/04/29/docker-20180429-docker-install-mysql/](https://www.hanumoka.net/2018/04/29/docker-20180429-docker-install-mysql/)
- User 생성, [https://jang8584.tistory.com/267](https://jang8584.tistory.com/267)
- MySQL Connector 세팅, [https://whitepaek.tistory.com/18](https://whitepaek.tistory.com/18)
- JDBC 활용(MySQL), [https://victorydntmd.tistory.com/145](https://victorydntmd.tistory.com/145)
- 에러 해결, [https://stackoverflow.com/questions/64307077/docker-compose-only-one-usage-of-each-socket-address-protocol-network-address/64310265](https://stackoverflow.com/questions/64307077/docker-compose-only-one-usage-of-each-socket-address-protocol-network-address/64310265)