AWS 실습 - RDS 생성

이지윤·2022년 5월 2일
0

클라우드서비스

목록 보기
7/8

AWS RDS 생성 순서

  1. AWS RDS 접속 후 데이터베이스 생성 버튼을 클릭
  2. MySQL 선택 (필자는 MySQL를 사용)
  3. 무료로 사용하기 위해 프리티어 선택
  4. DB 인스턴스, 사용자 ID, 암호 작성
  5. 연결 탭에서 퍼블릭 액세스를 "예" 설정
  6. 나머지는 그대로 두고 생성

생성 후 잠시동안 기다리면 RDS -> 데이터베이스 탭에 데이터베이스가 생성된 것을 확인할 수 있다.

  1. 보안 규칙 설정
    데이터베이스 탭 -> 해당 데이터베이스의 DB 식별자 클릭 -> 연결 & 보안 탭 -> 보안 VPC 보안 그룹 하이퍼링크 클릭 -> 나오면 보안 그룹 하이퍼링크 클릭 -> 인바운드 규칙 탭 -> 인바운드 규칙 편집 클릭 -> 아래 사진처럼 설정 후 규칙 저장

우분투 서버에서 DB 사용해보기

터미널에 접속하여 우분투 서버 접속 후 mysql -u root -p -h 엔드포인트 입력
-u : 데이터베이스 생성 시 입력했던 사용자ID
-p : 데이터베이스 생성 시 입력했던 암호를 묻겠냐는 옵션
-h : host


접속 완료


  1. 데이터베이스들 확인
    > show databases;

  2. 데이터베이스 생성
    > create database velogdb;

  3. root 유저 말고 DB에 접근할 수 있는 유저 설정
    create user '유저이름'@'%' identified by 'password';
    > create user 'jiyoon'@'%' identified by '1234';

  4. 위에서 새로 생성한 유저에게 권한 부여
    grant all priviliges on 데이터베이스명.* to '유저명'@'%';
    > grant all privileges on velogdb.* to 'jiyoon'@'%';

  5. 'jiyoon' 유저로 DB 접속
    jiyoon 유저에서도 velogdb가 보이는 것을 확인할 수 있다

Mysql workbench를 이용해 DB 접속

터미널에서는 작업하기 힘들기 때문에 workbench를 사용해 작업하도록 하겠습니다.


워크벤치 접속
Hostname에는 엔드포인트를 넣어줍니다.


  1. 테이블 생성
use velogdb;
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);

  1. 테이블에 데이터 넣기
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());

우분투 서버에서 php를 사용하여 간단한 웹 페이지 구현

  1. MySQL과 PHP 연동 라이브러리 설치
    sudo apt install php7.2-mysql ( php -v로 버전확인 후 버전 맞춰서 install)

  2. MySQL 과 Apache 재시작

    1. sudo service mysql restart
    2. sudo apachectl restart
    3. sudo apt update
    4. sudo apt-get install mysql-server
    5. sudo service mysql restart
    6. sudo apachectl restart
  3. php 파일을 생성하기 위해 /var/www/html 경로로 이동

  4. nano 편집기를 사용해 create.php를 작성
    create.php - 책 / 본문 주요내용 / 저자 입력 화면
    sudo nano create.php 터미널에 입력 후 아래 코드 작성

<?php
$conn = mysqli_connect(
  '엔드포인트', // 주소
  '유저명',
  '유저비밀번호',
  '데이터베이스명'); // 데이터베이스 이름

$sql = "SELECT * FROM book";
$result = mysqli_query($conn, $sql);

?>
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>WEB</title>
  </head>
  <body>
    <h1>TUKOREA University 한국공학대학교</h1>
    <h3> 원하는 책의 제목 본문 저자를 입력하세요. </h3>
    <form action="process_create.php" method="POST">
      <p><input type="text" name="title" placeholder="제목 (ex)Harry Porter"></p>
      <p><input type="text" name="description" placeholder="본 문  (ex)magic stone"></p>
      <p><input type="text" name="author" placeholder="저자  (ex)rolling"></p>
      <p><input type="submit"></p>
    </form>
  </body>
</html>
  1. nano 편집기를 사용해 process_create.php를 작성
    process_create.php - 데이터 저장 성공 여부 확인 화면
    sudo nano process_create.php 터미널에 입력 후 아래 코드 작성
<?php
$conn = mysqli_connect(
  '엔드포인트', // 주소
  '유저명',
  '유저비밀번호',
  '데이터베이스명'); // 데이터베이스 이름
  # title, description 이라는 사용자가 입력한 정보를 그대로 php에 입력하는 행위는 보안에 취약, 따라서 관리 필요

  $filtered = array(
    'title'=>mysqli_real_escape_string($conn, $_POST['title']),
    'description'=>mysqli_real_escape_string($conn, $_POST['description']),
    'author'=>mysqli_real_escape_string($conn, $_POST['author'])
  );

$sql = "
  INSERT INTO book
    (title, description, author, created)
    VALUES(
      '{$filtered['title']}',
      '{$filtered['description']}',
      '{$filtered['author']}',
        NOW()
    )
";
$result = mysqli_query($conn, $sql);
if($result === false){
  echo '저장하는 과정에서 문제가 생겼습니다. 관리자에게 문의해주세요';
  error_log(mysqli_error($conn));
} else {
  echo '성공했습니다. <a href="create.php">돌아가기</a>';
}
?>

웹 페이지 결과 확인해보기

  1. 브라우저 url에 ec2퍼블릭IP/create.php 입력

  2. 내용 작성

  3. 제출 버튼 클릭 후 DB에 값이 들어갔는지 확인

profile
초보자

0개의 댓글