MySQL 도커로 설치하고 테스트 DB 사용하기
MySQL 도커로 설치하고 테스트 DB 사용하기
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
- https://wecandev.tistory.com/107
- https://devdhjo.github.io/mysql/2020/01/29/database-mysql-002.html