MySQL 도커로 설치하고 테스트 DB 사용하기

MySQL 도커로 설치하고 테스트 DB 사용하기

Database
MySQL 도커로 설치하고 테스트 DB 사용하기
Author

gabriel yang

Published

December 6, 2023

MySQL 도커로 설치하고 테스트 DB 사용하기

MySQL DB를 연습하기 위해서 도커로 MySQL 이미지를 다운로드 및 실행합니다. 우선 MySQL이미지를 도커 허브에서 찾습니다.

mysql 이미지 이름을 다운로드 할 수 있습니다. DB 볼륨을 로컬컴퓨터에서 확인하고 파일을 관리하기 위한 볼륨을 마운트하기 위해서 docker-compose.yml파일을 만들어서 관리합니다.

docker-compose.yml
version: '3'
services:
    mysqldb:
      container_name: mysqldb
      image: mysql
      ports:
        - "3306:3306"
      volumes:
        - ./mysqldb:/var/lib/mysql
      env_file: .env
      environment:
        - MYSQL_ROOT_PASSWORD=1234
        - TZ=Asia/Seoul
      restart: always

docker-compose를 아래의 명령으로 실행합니다.

docker-compose up -d

DB를 편리하게 사용하기 위해서 DBeaver를 설치합니다. 설치방법은 mysql설치를 확인합니다.

DBeaver를 이용해서 설치한 DB에 연결합니다. 데이터베이스 > 새 데이터베이스 연결을 선택해서 DB에 연결합니다. 연결이 완료되었으니 이제 docker의 데이터베이스에 접속합니다.

sudo docker exec -it <docker서비스명>  bash

MySQL을 container생성을 위해 사용한 root 계정의 암호를 입력하여 mysql에 접속합니다.

mysql -u root -p

데이터베이스 구조

데이터베이스는 내부에 테이블을 갖습니다. 테이블은 MySQL의 가장 작은 데이터베이스 단위 입니다. 테이블은 엑설처럼 데이터를 나타내는 특정 유형의 테이터를 나타내는 열과 각 데이터 레코드를 나타내는 행으로 구성됩니다. 각 열은 데이터의 유형과 속성정보를 갖습니다.

데이터베이스 확인하기

기본으로 생성된 database를 확인합니다.

SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

데이터베이스 생성

DB연습을 위한 데이터베이스를 생성합니다.

CREATE DATABASE test_db;
Query OK, 1 row affected (0.24 sec)

데이터베이스 사용자 생성

유저이름은 test_id, 암호는 test1234를 갖는 유저를 생성합니다. %를 사용해서 유저는 모든 클라이언트에서 접속 가능하도록 설정합니다.

CREATE USER 'test_id'@'%' IDENTIFIED BY 'test1234';

유저가 사용할 수 있는 데이터베이스와 권한을 설정합니다.

GRANT ALL PREVILEGES ON test_db.* TO 'test_id'@'%';

test_db의 모든 테이블에 권한을 부여하기 위해 test_db.*을 사용했습니다. 이제 새로 생성한 유저로 접속해서 test_db를 사용할 수 있는 지 확인합니다.

데이터베이스 접속

mysql -u test_id -p
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
| test_db            |
+--------------------+
3 rows in set (0.01 sec)

새로 생성한 사용자로 접속 시 새로 생성된 database를 확인할 수 있습니다.

데이터베이스 선택 및 확인

현재 선택된 데이터베이스가 있는 지 확인합니다.

SELECT DATABASE();
+------------+
| database() |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)

아직 선택된 데이터베이스가 없습니다.

USE test_db;
SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| test_db    |
+------------+

이제 데이터베이스가 변경되었으며 현재 사용중인 데이터베이스는 test_db로 표시됩니다.

데이터베이스의 테이블 확인하기

데이터 베이스의 TABLE을 확인합니다. 생성된 테이블이 없는 상태입니다.

SHOW TABLES;
Empty set (0.00 sec)

테이블 생성 및 확인

테이블을 생성하고 생성된 테이블 정보를 확인합니다.

CREATE TABLE test_table (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(100) NOT NULL,
  phone VARCHAR(50)
);

생성된 테이블 정보는 describe으로 확인할 수 있습니다.

describe test_table;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int          | NO   | PRI | NULL    | auto_increment |
| name  | varchar(100) | NO   |     | NULL    |                |
| phone | varchar(50)  | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

3개의 열이 있는 테이블에 대한 정보를 확인할 수 있습니다.

References

  1. https://wecandev.tistory.com/107
  2. https://devdhjo.github.io/mysql/2020/01/29/database-mysql-002.html