티스토리 뷰
통합 테스트를 하려고 했는데, MYSQL 의존성이 있어서 세팅이 필요한 경우가 있다.
가장 가볍게 구성하려면, Docker 를 이용하는게 가장 손쉬운것 같다. docker 를 이용해서 mysql 8 버전을 띄우고, 외부접근 가능한 계정까지 만들어 보자.
1. docker 를 통해 mysql 기동하기
docker 가 설치되어있다면 아주 간단한 명령어로 기동이 가능하다.
docker pull mysql:8.0.22
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=암호 -d -p 3306:3306 mysql:8.0.22
만약, 프로세스가 종료되도 db의 데이터가 유지되어야 한다면 볼륨마운트를 해야한다. (안그러면 컨테이너 종료하면 사라짐)
실행할 때 -v 로컬경로:/var/lib/mysql 옵션을 추가해서 실행하면 되므로 참고해두자. (볼륨마운트가 뭔지 모른다면 도커부터 공부하자)
2. DB생성 + 계정추가
아직은 root 계정만 존재하기 때문에, 컨테이너 안에서 외부에 연결가능한 계정을 만들어야한다.
컨테이너 안에서 명령어를 입력하려면 다음과 같이 실행하면 된다.
docker exec -it mysql-container bash
위 명령을 실행하면, 다음과 같이 새로운 프롬포트가 뜨는데, 이게 도커 컨테이너 안에서 명령을 실행할 수 있는 상태이다.
여기서 mysql 에 접속해서 db 와 계정을 추가해보자.
$ docker exec -it mysql-container bash
# --------------------------------
# --- 여기부터는 컨테이너 안의 환경임 ----
# ---------------------------------
# (1) mysql root 계정으로 접속
root@21808d4eb6c3:/# mysql -u root -p
Enter password: <--- 도커 실행시 MYSQL_ROOT_PASSWORD 에 정의한 비빌번호
# (2) mysql 창
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 56
Server version: 8.0.22 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
이제 mysql 프롬포트 창에서 사용할 db 와 외부에서 접근가능한 계정을 추가해보자.
mysql 구버전의 경우 system 용 table 에 직접 데이터를 입력하는 방식으로 가이드 되었는데, mysql 8.x 버전대부터는 아래와 같이 명령어를 통해 유저를 생성해야 정상적으로 동작하니 참고하자.
CREATE DATABASE 디비명;
CREATE USER 계정명@'%' IDENTIFIED BY '암호';
GRANT ALL PRIVILEGES ON 디비명.* TO '계정명'@'%';
FLUSH PRIVILEGES;
3. jdbc 연결하기
localhost에서 3306 포트로 사용한다고 할때, JDBC URL 의 경우 다음과 같이 사용해주자.
jdbc:mysql://127.0.0.1:3306/디비명?useSSL=false&allowPublicKeyRetrieval=true
위와 같이 사용하지 않으면, public key retrieval is not allowed 오류가 발생될 수 있는데, 이 문제를 피할 수 있다.
'데이터처리 > DBMS' 카테고리의 다른 글
[MySQL] The table does not comply with the requirements by an external plugin 문제 (0) | 2023.05.03 |
---|---|
[MySQL] Centos 에서 MySQL 원격접속하기 (0) | 2023.04.18 |
[sqlite3] centos 에서 sqlite 최신버전으로 업데이트 하기 (0) | 2023.04.03 |
[MySQL] DBeaver 에서 Mysql 8.x 접속시 오류 해결 : Public Key Retrieval is not allowed (0) | 2022.10.17 |
[PostgreSQL] javax.net.ssl.SSLHandshakeException 해결방법 (0) | 2022.01.24 |