AWS

본문에서 사용된 인스턴스는 프리티어이며 Ubuntu Server 20.04 LTS를 사용하고 있습니다.


MySQL 설치

 

1. 패키지 업데이트

sudo apt update

 

2. MySQL 설치

sudo apt install mysql-server

 

3. MySQL Secure 초기화

sudo mysql_secure_installation

 

이후 Yes | No는 본인의 선택에 따라 하면 된다.

나는 처음 강력함 암호키 사용을 제외하고 모두 Yes를 선택했다.

 

비밀번호는 영문 대문자 + 영문 소문자 + 숫자 + 특수문자를 포함하여 8자리 이상으로 설정한다.

 

 

+ 비밀번호 변경하는 방법

-- MySQL 5.7 이전
UPDATE USER SET password=password('비밀번호') WHERE USER = '계정';

-- MySQL 5.7 이후
ALTER USER '계정'@'localhost' IDENTIFIED WITH mysql_native_password BY '비밀번호';

-- 변경사항 적용
FLUSH PRIVILEGES;

 

 

4. 외부 접속 허용을 위한 mysqld.cnf 수정

- root 계정으로 전환

sudo -i
혹은
sudo su

root 계정을 탈출할 때는 exit를 입력하면 된다.

 

 

- 디렉토리 이동

cd /etc/mysql/mysql.conf.d

 

- Vi 에디터로 파일 실행

vi mysqld.cnf

 

- bind-address를 찾아서 0.0.0.0으로 변경 혹은 bind-address, mysqlx-bind-address 주석 처리

 

vi 에디터 사용법

/ 를 누르고 하단에 검색할 내용을 입력한 뒤 엔터를 누른다.
n 을 누르면 해당 단어가 포함된 내용을 순차적으로 검색한다.
i 를 누르면 insert 모드로 변경되어 수정할 수 있다.
esc 혹은 ctrl+c 를 통해 해당 모드를 빠져나올 수 있다.
:wq 를 입력하여 vi 에디터를 종료할 수 있다.

 

 

5. MySQL 서버 재시작

sudo systemctl restart mysql
혹은
sudo service mysql restart

 

 

(Option) MySQL 워크벤치 사용을 위한 사용자 계정 생성

- 먼저 MySQL 서버로 접속을 한다.

mysql -uroot -p

 

- 외부 접근을 위한 계정 생성

CREATE USER '계정'@'%' identified by '비밀번호';

@'%' : 어떤 클라이언트에서든 접근 가능하다.
@'localhost' : 해당 컴퓨터에서만 접근 가능하다.

 

 

- 데이터베이스에 권한 추가

GRANT ALL ON DB명.* TO '계정'@'%' WITH GRANT OPTION;

-- 아래와 같이 모든 DB에 대한 권한을 줄 수도 있다.
GRANT ALL ON *.* TO '계정'@'%' WITH GRANT OPTION;

-- 변경사항 적용
FLUSH PRIVILEGES;

 

 

 

+ root 계정을 외부 접근이 가능하도록 설정하는 방법

UPDATE USER SET Host='%' WHERE User='root';

 


redis 설치

 

1. 패키지 업데이트

sudo apt update

 

2. redis 설치

sudo apt install redis-server

 

3. 외부 접속 허용 및 Redis 설정을 위한 redis.conf 수정

- root 계정으로 전환

sudo -i
혹은
sudo su

 

- 디렉토리 이동

cd /etc/redis

 

- Vi 에디터로 파일 실행

vi redis.conf
vi 에디터 사용법

/ 를 누르고 하단에 검색할 내용을 입력한 뒤 엔터를 누른다.
n 을 누르면 해당 단어가 포함된 내용을 순차적으로 검색한다.
i 를 누르면 insert 모드로 변경되어 수정할 수 있다.
esc 혹은 ctrl+c 를 통해 해당 모드를 빠져나올 수 있다.
:wq 를 입력하여 vi 에디터를 종료할 수 있다.

 

 

1. 외부 접속 허용

 - bind를 찾는다.

 - bind 127.0.0.1 ::1 부분을 bind 0.0.0.0 으로 변경한다.

 

 

2. 비밀번호 변경 (Option)

 - requirepass를 찾는다.

 - requirepass foobared 부분의 주석을 해제하고 foobared 자리에 원하는 비밀번호를 입력한다.

 

 

3. Max 메모리 설정

 - maxmemory를 찾는다.

 - maxmemory <bytes> 부분의 주석을 해제하고 <bytes> 자리에 max 메모리 값을 입력한다.

byte 단위의 숫자로 입력해도 되고,
500mb, 1gb 등 단위를 포함하여 원하는 메모리 값을 설정할 수 있다. (개인의 인스턴스 성능에 따라)

💡 참고 : 프리티어 인스턴스는 1GB 메모리를 가지고 있어 500mb 정도만 설정하는 것을 추천

 

 

4. 데이터 교체 알고리즘 설정

 - policy를 찾는다.

 - maxmemory-policy noeviction 부분의 주석을 해제하고 noeviction 자리에 원하는 데이터 교체 알고리즘을 입력한다.

 

데이터 교체 알고리즘은 redis 문서의 Eviction Policy에서 확인 가능하다.

나는 사용된 지 가장 오래된 데이터를 삭제하는 allkeys-lru 알고리즘을 선택했다.

 

 

5. redis 서버 재시작

sudo systemctl start redis-server

 

6. EC2 포트 개방

- 인스턴스 상세 설정에서 [보안] > 보안 그룹을 클릭

 

- [인바운드 규칙 편집] 클릭

 

- 아래와 같이 규칙 설정 후 저장

 


참고 자료

 

[AWS] EC2에 MySQL 설치하기

 

AWS EC2에 MySQL 서버 구축하기

 

[Redis] AWS EC2에 redis-server setup 하기

+ Recent posts