Docker로 MySQL 시작하기

먼저 도커를 실행한다.

이후 도커에서 MySQL 이미지를 조회하고, 내려받는다.

1
2
$ docker search mysql
$ docker pull mysql

도커 이미지가 내려받아지면, 이제 이미지 기반으로 컨테이너를 생성한다.

1
$ docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=1q2w3e4r mysql

각 옵션을 설명하면 다음과 같다.

  • run : 컨테이너를 생성(create)하자마자 실행(start)한다.
  • -d : detach, 백그라운드에서 컨테이너를 실행한다는 명령어이다.
  • -p : port, 컨테이너의 포트를 도커가 실행되고 있는 호스트 PC의 포트와 맵핑할 때 사용하는 옵션이다. 위의 명령어는 컨테이너의 3306번 포트와 호스트 PC의 3306번 포트를 맵핑하는 명령이다.
  • --name : 컨테이너의 이름을 지정하는 옵션이다.
    • 이미지 이름과 같은 이름을 컨테이너에 지정하다보니 위의 명령어가 헷갈릴수 있는데, 명령어 마지막에 붙은 mysql은 이미지 이름을 의미한다.
  • -e : 환경변수를 설정하는 옵션이다. 위의 명령어에선 mysql의 ROOT 비밀번호를 지정하는 명령으로 사용했다.

이제 도커가 실행되면, 컨테이너 내부로 진입을 해야한다.

1
$ docker exec -it mysql bash

bash 모드로 컨테이너를 진입하겠다는 명령이다.

도커 컨테이너에 진입했다면, mysql을 실행할 차례이다.

1
$ mysql -u root -p

그리고 아까 환경변수에 입력했던 비밀번호를 입력하면 mysql이 실행될 것이다.


이제 막 mysql 컨테이너를 생성했기 때문에 컨테이너 내부 데이터베이스엔 기본 데이터베이스만 있을 것이다.

1
mysql> show databases;

이제 데이터베이스를 생성해보자. connectdb 라는 이름의 데이터베이스를 생성해보겠다.

1
mysql> CREATE DATABASE connectdb;

데이터베이스를 사용할때 이용할 사용자 계정을 생성하겠다.

1
2
mysql> CREATE USER devandy@'%' identified by '1q2w3e4r';
mysql> CREATE USER devandy@'localhost' identified by '1q2w3e4r';

데이터 베이스에 사용할 수 있는 권한으로 방금 생성한 사용자를 등록해보겠다.

1
2
3
mysql> GRANT ALL PRIVILEGES ON connectdb.* TO devandy @ '%' identified BY '1q2w3e4r';
mysql> GRANT ALL PRIVILEGES ON connectdb.* TO devandy @ 'localhost' identified BY '1q2w3e4r';
mysql> FLUSH PRIVILEGES;

마지막에 flush 명령어를 입력해주어야만 privileges 설정이 MySQL에 반영된다.

방금 생성한 사용자 계정으로 데이터베이스를 실행해보겠다.

1
$ mysql -h127.0.0.1 -udevandy -p connectdb;
  • -h 옵션은 host를 의미한다. 데이터베이스를 실행하는 환경이 어디인지를 지정하는 것이다. 로컬에서 작업하므로 127.0.0.1을 입력하였다.

  • -u옵션은 사용자를 지정하는 옵션 명령어이다.

프롬프트창에서 비밀번호를 입력하면, 위에서 생성한 계정으로 접속했음을 알 수 있다.