생성 후 잠시동안 기다리면 RDS -> 데이터베이스 탭에 데이터베이스가 생성된 것을 확인할 수 있다.
터미널에 접속하여 우분투 서버 접속 후 mysql -u root -p -h 엔드포인트 입력
-u : 데이터베이스 생성 시 입력했던 사용자ID
-p : 데이터베이스 생성 시 입력했던 암호를 묻겠냐는 옵션
-h : host
접속 완료
데이터베이스들 확인
> show databases;
데이터베이스 생성
> create database velogdb;
root 유저 말고 DB에 접근할 수 있는 유저 설정
create user '유저이름'@'%' identified by 'password';
> create user 'jiyoon'@'%' identified by '1234';
위에서 새로 생성한 유저에게 권한 부여
grant all priviliges on 데이터베이스명.* to '유저명'@'%';
> grant all privileges on velogdb.* to 'jiyoon'@'%';
'jiyoon' 유저로 DB 접속
jiyoon 유저에서도 velogdb가 보이는 것을 확인할 수 있다
터미널에서는 작업하기 힘들기 때문에 workbench를 사용해 작업하도록 하겠습니다.
워크벤치 접속
Hostname에는 엔드포인트를 넣어줍니다.
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);
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());
MySQL과 PHP 연동 라이브러리 설치
sudo apt install php7.2-mysql ( php -v로 버전확인 후 버전 맞춰서 install)
MySQL 과 Apache 재시작
php 파일을 생성하기 위해 /var/www/html 경로로 이동
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>
<?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>';
}
?>
브라우저 url에 ec2퍼블릭IP/create.php 입력
내용 작성
제출 버튼 클릭 후 DB에 값이 들어갔는지 확인