[AWS RDS] RDS 생성과 php 연동
RDS
AWS RDS(Relation Database Service): 클라우드에서 관계형 DB 를 쉽게 설치, 운영 및 확장 할 수 있는 관리형 서비스
특징
- Amazon Aurora, MySQL, MariaDB, Oracle, SQL Server, PostareSQL 데이터베이스 엔진 지원
- DB 인스턴스 백업 및 복구를 위한 두 가진 방법(자동 백업, DB 스냅샷) 제공
- 40개의 DB 인스턴스 보유 가능
- 자세한 사항은 공식문서 참고
인스턴스 생성
-
RDS에서 데이터베이스 생성 클릭
-
데이터베이스 생성 방식 선택
손쉬운 생성: DB 엔진만 골라 인스턴스 생성가능, 추가적인 설정은 인스턴스 생성 후 변경
-
엔진 옵션 선택
DB 와 DB 버전 선택
-
템플릿 선택
용도에 따라 선택
-
설정
DB 인스턴스 식별자: 현재 AWS 리전에서 AWS 계정을 소유하는 모든 DB 인스턴스에 대해 고유한 이름 작성
자격 증명 설정: root 이름 및 암호 설정
-
인스턴스 구성
사용목적에 맞게 인스턴스 선택 프리티어는 기본값 선택
-
스토리지 설정
- 범용(SSD) 스토리지
- 광범위한 데이터베이스 워크로드에 적합
- 3 IOPS/GiB 가 기본적으로 제공, 3000IOPS까지 버스팅 가능
- 프로비저닝 된 IOPS(SSD) 스토리지
- I/O 을 많이 사용하는 데이ㅓ베이스 워크로드에 적합
- 1000~30000 IOPS 범위의 I/O 를 프로비저닝할 수 있는 유연성 제공
-
마그네틱 스토리지
- 이전 버전과의 호환성을 위한 지원
- 권장하지 않음
-
스토리지 자동 조정기능: 처리량이 급등하여 DB 여유공간이 부족할 때, 자동으로 스토리지 확장하는 기능
- 최대 스토리지 임계값: 해당 DB 인스턴스가 자동으로 확장할 수 있는 제한 값
- 범용(SSD) 스토리지
-
가용성 및 내구성 설정
다중 AZ 배포를 사용해 DB 인스턴스에 고가용성과 장애 조치 가능을 지원
-
VPC 설정
- 퍼블릭 액세스 기능
- Public IP를 할당하여 VPC 외부에서 DB 인스턴스 접근을 허용할 것인가
- VPC 보안 그룹
- 인/아웃바운드 규칙이 정의된 보안 그룹 선택
- EC2에서 접근하게 하려면, 보안그룹을 생성 후 EC2의 보안 그룹 연결
- 데이터베이스 포트
- MySQL 기본 포트인 3306 사용
- 퍼블릭 액세스 기능
-
데이터베이스 인증 설정
- 암호인증
- DB 암호를 사용해서 인증
- 암호 및 IAM 데이터베이스 인증
- IAM 정책으로 인증
- 보안상 추천
- 암호인증
EC2 에서 RDS 접근하기
- 생성한 데이터베이스 인스턴스 에서 VPC 보안 그룹 클릭
- 인바운드 규칙 탭으로 이동하여 인바운드 규칙 편집 클릭
- 규칙 추가 클릭
- 유형: MYSQL/Aurora, 사용자: AnyWhere-IPv4 클릭 후 규칙 저장
-
EC2 에 MySQL 설치
$ mysql -V
로 설치 확인$ sudo yum install mysql
로 설치 -
EC2 에서 RDS 인스턴스 접근 RDS 인스턴스에서 엔드포인트 확인 후
$ mysql -u {마스터 사용자 이름} -p -h {RDS 인스턴스 엔드포인트}
로 RDS 접근
php 연동
MySQL 과 PHP 연동 라이브러리 설치
$ php -v
로 버전 확인 후 버
$ sudo apt install php7.2-mysql
알맞은 버전으로 설치
이 후 MySQL 과 Apache 재시작
$ sudo service mysql restart
$ sudo service mysql restart
$ sudo apachectl restart
$ sudo apt update
$ sudo apt-get install mysql-server
$ sudo service mysql restart
$ sudo apachectl restart
EC2 에서 MySQL 사용
database 생성
create database {DB name};
- root가 아닌 유저가 DB를 생성하려면 DDL 명령어에 대한 권한 필요
user 생성
create user '{user}'@'%' identified by '{password}';
- @ 뒤의 부분은 호스트 부분으로 local 일 경우 localhost, 아닐 경우 위처럼 @
- identified by: 암호 설정
유저한테 권한 부여
grant all privileges on {DB name}.* to '{user}'@'%';
flush PRIVILEGES;
- {DB name} 의 모든 접근을 허용
database 사용
use {DB name};
용어 정리
- iam 정책
- 범용(ssd) 스토리지
- iops
- 프로비저닝 된 iops(ssd) 스토리지
- DDL 명령어 (db)
댓글남기기