MySQL을 클라우드 서버에 올려서 사용하고 싶어 Docker로 간편하게 MySQL 서버를 띄우는 법을 알아보겠다.
설치 전 준비
AWS에 회원가입이 되어 있어야 하며 Docker의 설치가 되어 있어야 한다.
Docker의 설치는 다음 포스팅을 참고 바란다.
MySQL 컨테이너 띄우기
1. MySQL 이미지를 pull 하기
mysql 최신 버전의 이미지를 가져온다.
$ docker pull mysql:latest
2. Docker 컨테이너 볼륨 설정
도커에서는 암시적 볼륨과 명시적 볼륨이 존재한다. 암시적 볼륨의 경우 컨테이너가 삭제되면 같이 삭제되기 때문에 명시적으로 볼륨을 생성하여 마운팅을 해주면 영구적으로 데이터를 보존할 수 있다. 그렇기 때문에 컨테이너의 내부 볼륨과 호스트의 볼륨을 마운팅 해주는 과정이 필요하다.
먼저, volume을 생성해 준다.
# volume 생성
$ docker volume create mysql-volume
# volume 확인
$ docker volume ls
생성한 volume을 컨테이너에 마운팅하여 실행시킨다.
$ docker run -d --name mysql-container -p 3306:3306 -v mysql-volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 mysql:latest
--name : mysql-container라는 이름의 컨테이너 생성
-p : 호스트의 3306 포트를 컨테이너의 3306 포트와 포트포워딩
-v : 호스트의 mysql-volume의 volume에 컨테이너의 /var/lib/mysql volume을 마운팅
-e : MYSQL_ROOT_PASSWORD 환경변수 값을 '1234'로 지정
-d : daemon으로 실행
3. 컨테이너에 접속하기
띄운 컨테이너에 bash 쉘로 접속한다.
$ docker exec -it mysql-container bash
MySQL 서버에 접속하기
컨테이너를 띄우고 접속했으니 이제 MySQL 서버에 접속한다.
$ mysql -u root -p
# 컨테이너 생성 시 입력했던 패스워드 입력
Enter password:
...
mysql>
root 계정으로 접속하였으니, 이제 새로운 user를 만든다.
# USER 생성, '%'는 모든 IP에서 접속 가능
mysql> CREATE USER test01@'%' identified by '1234';
# 생성한 USER에 모든 권한 부여
mysql> GRANT ALL PRIVILEGES ON *.* to test01@'%';
# 변경 사항 적용
mysql> FLUSH PRIVILEGES;
mysql> exit;
생성한 user로 MySQL 서버에 접속한다.
$ mysql -u test01 -p
Enter password:
...
mysql>
데이터베이스를 하나 생성해본다.
mysql> CREATE DATABASE test;
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.00 sec)
MySQL 외부 접속
AWS EC2에서 구축했기 때문에 인스턴스에 외부에서 접속 가능하도록 설정을 해줘야 한다. 설정에 대해서는 따로 설명하지 않겠다. 이후 설정을 완료하였으면, HeidiSQL이라는 툴을 이용해 접속해 보겠다.
호스트명에 EC2 인스턴스의 퍼블릭 IP를 입력하고 생성한 사용자에 대한 정보를 입력한다. 그리고 아까 생성한 test 데이터베이스에 접속하겠다고 설정한다.
다음과 같이 잘 접속되는 것을 확인할 수 있다.
'Docker' 카테고리의 다른 글
[Docker] centos 컨테이너에서 systemctl 명령어가 안될 때 (0) | 2022.01.01 |
---|---|
[Docker] ubuntu에서 docker 설치 하는 방법 (1) | 2021.12.15 |
[Docker] dockerfile로 flask 배포하기 (0) | 2021.12.09 |
[Docker] Docker로 리눅스(centos) 설치 (1) | 2021.12.09 |