먼저 도커를 실행한다.
이후 도커에서 MySQL 이미지를 조회하고, 내려받는다.
1 | docker search 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 | mysql> CREATE USER devandy@'%' identified by '1q2w3e4r'; |
데이터 베이스에 사용할 수 있는 권한으로 방금 생성한 사용자를 등록해보겠다.
1 | mysql> GRANT ALL PRIVILEGES ON connectdb.* TO devandy @ '%' identified BY '1q2w3e4r'; |
마지막에 flush
명령어를 입력해주어야만 privileges
설정이 MySQL에 반영된다.
방금 생성한 사용자 계정으로 데이터베이스를 실행해보겠다.
1 | mysql -h127.0.0.1 -udevandy -p connectdb; |
-h
옵션은 host를 의미한다. 데이터베이스를 실행하는 환경이 어디인지를 지정하는 것이다. 로컬에서 작업하므로 127.0.0.1을 입력하였다.-u
옵션은 사용자를 지정하는 옵션 명령어이다.
프롬프트창에서 비밀번호를 입력하면, 위에서 생성한 계정으로 접속했음을 알 수 있다.