DBeaver - Docker Mysql 연결 삽질일기

HanSH·2023년 7월 2일
1

SpringBoot 삽질기

목록 보기
2/12

본문

Spring Boot를 시작하기 전, docker의 mysql 이미지를 이용하여 데이터베이스를 먼저 구축하고자 한다.

docker and mysql

docker에 mysql 이미지를 가져와 run을 하는 과정을 먼저 해보자.

docker run --name mysql-test -d -p 3306:3306 mysql:latest

이때, 컨테이너가 실행되지 않고 아래의 log를 볼 수 있었다.

// docker logs mysql-test
2023-07-02 10:37:34+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.33-1.el8 started.
2023-07-02 10:37:34+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2023-07-02 10:37:34+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.33-1.el8 started.
2023-07-02 10:37:34+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
    You need to specify one of the following as an environment variable:
    - MYSQL_ROOT_PASSWORD
    - MYSQL_ALLOW_EMPTY_PASSWORD
    - MYSQL_RANDOM_ROOT_PASSWORD

대충,

  • MYSQL_ROOT_PASSWORD="password"
  • MYSQL_ALLOW_EMPTY_PASSWORD="ANY_VALUE"
  • MYSQL_RANDOM_ROOT_PASSWORD="ANY_VALUE"

이 셋 중 하나를 환경변수로 쓰라는 내용인 것 같다.

명령어를 수정해보자. 로컬에서 학습용으로 사용할 데이터베이스라 빈 비밀번호를 허용하였다.

docker run --name mysql-test -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -d -p 3306:3306 mysql:latest

mysql container

정상적으로 생성된 것을 볼 수 있다.

이제 DBeaver를 이용하여 mysql에 접근해보자.

어라? 난 제대로 한 것 같은데?
왜 오류가 발생하지?
왜지?

기존에 설치한거라고는 MySQL Workbench 뿐인데?

윈도우라면 netstat -ano 명령어를 cmd에 입력하 3306포트가 사용중인지 확인해 보자.


잡았다 요놈

무언가가 사용중인 것 같다.

어라.....
상상치도 못한 정체였다.
윈도우에서 docker를 사용할 때 고질병이니 포트를 바꿔보자.

docker run --name mysql-test -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -d -p 3307:3306 mysql:latest

Test Connection을 눌렀을 때 해당 창이 뜬다면 성공이다!
완료를 누르고 데이터베이스를 마음껏 만져보자.

참고 1

만약, 비밀번호를 이용해서 MySQL을 DBeaver에서 열어보고싶다! 하면
이곳을 참고하자.

참고 2

docker-compose.yml을 이용해서 컨테이너를 사용해보자.

version: '3'
services:
  mysql:
    image: mysql:latest
    restart: always
    container_name: mysql
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=true
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    ports:
      - 3307:3306
    volumes:
      - <data 저장할 절대 경로>:/var/lib/mysql

해당 docker-compose를 작성하고, docker-compose up을 하면 컨테이너를 관리하기 쉬워진다.

profile
저는 말하는 싹 난 감자입니다

0개의 댓글