도커 버전을 확인해 줍니다.
docker -v
1. mysql 설치
mysql 5.6 버전으로 설치해 주겠습니다.
sudo docker pull mysql:5.6
5.6 버전이 정상적으로 설치된 모습입니다.
pull(당겨오다) 명령어로 mysql을 도커허브에서 설치했으므로 이미지 파일입니다.
2. MySQL Docker 컨테이너 생성 및 실행( e:환경변수 설명, d: detach-데몬 백그라운드)
root 유저를 초기 유저로 생성해 줍니다. 루트 유저의 비밀번호를 지정해 주어야 합니다.
# --name 뒤엔 이름을 의미 mysql-lecture 말고 다른 이름도 가능, <password>를 지워버리고 원하는 비밀번호 입력 가능,
# 3306:3306은 호스트포트 : 컨테이너포트
sudo docker run --name mysql-lecture -e MYSQL_ROOT_PASSWORD=<password> -d -p 3306:3306 mysql:5.6
-d : 데몬으로 백그라운드에서 계속 살아있게 해주는 옵션입니다.
-e : 루트 유저의 비밀번호를 설정할 수 있는 환경설정 옵션입니다.
-p : 포트 포워딩 옵셥
Host Computer에서 EC2(우분투)로 들어올때 우분투가 mysql과 연결된 3306포트가 있는데, 그 3306 포트와 연결하기 위한 포트를 포워딩 해주어야 합니다. 그 명령어가 "-p" 입니다. 그래서 호스트포트 : 컨테이너포트 의 순서를 가집니다.
비밀번호는 저는 1234로 하겠습니다.
2-1. 컨테이너 상태 exited로 만들기
현재 컨테이너는 up 상태입니다. 삭제를 위해선 상태를 stop으로 만들어 주어야 하는데 다음과 같이 할 수 있습니다.
# docker 컨테이너 중지
sudo docker stop "컨테이너 ID"
2-2. 컨테이너 상태 up으로 만들기
# docker 컨테이너 재시작
sudo docker restart "컨테이너 ID"
status가 다시 up이 되었습니다.
3. mysql 컨테이너 접속
# MySQL Docker 컨테이너 접속(-i, --interactive, -t, tty)
sudo docker exec -it mysql-lecture /bin/bash
프롬프트가 변경되었습니다. mysql 컨테이너에 접속한 것 입니다.
/bin/bash에 mysql이 작동할 수 있는 최소한의 우분투 자료만 존재합니다.
3-1. mysql root유저로 접속하기
mysql -u root -p
# 비밀번호는 지정해줬던 번호로 (1234)
정상적으로 작동합니다.
4. DB, User 생성하기, User권한주기
# db생성
CREATE DATABASE "db이름";
# 유저생성
CREATE USER '유저이름'@'%' IDENTIFIED BY '비밀번호';
# 권한부여
GRANT ALL PRIVILEGES ON db이름.* TO '유저이름'@'%';
# 권한 메모리에 저장
flush privileges;
저는 db이름은 testdb, 유저는 tuser, 비밀번호는 1234로 지정했습니다.
정상적으로 생성된 모습입니다.
5. workbench로 접속해보기
mysql의 이 창에서 Connection name은 원하는 것으로 선택하고, Hostname은 EC2 인스턴스에서 퍼블릭 IP 주소를 복사 붙여넣기 해주면 됩니다. 그리고 password는 root 계정 만들었을때의 비밀번호를 입력합니다. 나는 1234로 했습니다.
퍼블릭 IPv4 주소를 써도 좋고, 퍼블릭 IPv4 DNS를 사용해도 좋습니다.
EC2의 인바운드 규칙 편집에 들어가서 규칙 추가 > MYSQL/Aurora > 소스는 IPv4 AnyWhere로 설정해서 0.0.0.0/0이 나오도록 해줍니다.
6. workbench에서 테이블 생성하고 값 추가하기
# book 테이블 생성
create table book(
id int not null AUTO_INCREMENt primary key,
title varchar(100) null,
description varchar(200) null,
author varchar(100) null,
created DATETIME NOT NULL);
# data 입력
INSERT INTO book(id, title, description, author, created) VALUES(1, 'harry potter','magic is power', 'yeom', now());
INSERT INTO book(id, title, description, author, created) VALUES(2, 'lord of the ring', 'ring is mine', 'yeom', now());
INSERT INTO book(id, title, description, author, created) VALUES(3, 'venom', 'black venom is fighter', 'yeom', now());
INSERT INTO book(id, title, description, author, created) VALUES(4, 'spiderman','spider is red', 'yeom', now());
테이블을 생성하고 data 입력도 수행해 줍니다.
workbench에서 정상적으로 추가되었습니다.
터미널에서도 확인해 줍시다.
show databases;
use testdb;
select * from book;
workbench에서 입력했던 값이 터미널에서 확인해도 똑같은 결과가 나오는 것을 확인 할 수 있습니다.
'[Cloud] > [AWS]' 카테고리의 다른 글
[AWS] describeavailabilityzones aws was not able to validate the provided access (0) | 2024.03.19 |
---|---|
[AWS] AWS s3 버킷에 원격으로 파일 업로드 후 읽기 (0) | 2023.10.11 |
[AWS] 도커설치 및 사용하기 (0) | 2023.05.31 |
[AWS] S3 사용하기 + 버킷 생성 + 폴더 생성 + 퍼블릭액세스차단해제 (0) | 2023.05.23 |
[AWS] cyberduck + php게시판 소스를 이용한 게시판 만들기 (0) | 2023.05.17 |