[Cloud]/[AWS]

[AWS] RDS(Mysql) + DB생성 + ubuntu연동하기 + workbench(맥)

마린독 2023. 5. 3. 04:32
728x90

 

1. RDS 생성하기(mysql)

aws의 rds로 접속합니다.

데이터베이스 생성을 클릭!!

 

표준 생성, 엔진 유형은 MYSQL 클릭

 

엔진 버전은 8.0.23을 선택!

 

템플릿은 "프리 티어"를 선택하도록 하겠습니다.

 

식별자 설정과 마스터 사용자 이름 그리고 마스터 암호(매우 중요)를 설정해 줍니다.

인스턴스는 db.t3.micro로 설정하도록 하겠습니다.

 

연결에서 퍼블릭 액세스를 "예"로 설정해줍니다.

 

퍼블릭 액세스 접근을 허용해야 rds를 외부에서 toad나 workbench등을 이용해 접근이 가능합니다.

 

이제 아래로 쭉 내리셔서 데이터베이스 생성을 누르시면 됩니다.

 

2. 프리티어 과금을 막기 위한 백업 설정

 

생성한 데이터베이스를 선택하고 수정을 클릭

 

아래로 쭉 내려서 추가 구성 - 백업 - 백업 보존 기간 0일로 설정

 

자동으로 스냅샷이 생성되는걸 방지해 주며 스냅샷 생성으로 20GB를 초과할 경우 프리티어여도 과금이 발생합니다.

저같은 경우 85%를 사용했을때 aws에서 메일이 왔으면 조치할 수 있었습니다.

 

아래로 쭉 내려서 계속 바로 적용

 

수정 예약 - 즉시 적용 "DB 인스턴스 수정" 클릭

 

수정되는데 시간이 조금 걸립니다. 3분정도 기다리면 되는것 같습니다.

 

3. ubuntu 연동

 

생성된 rds - 연결 & 보안 - 보안 - 클릭

 

보안 그룹 - 인바운드 규칙 - 인바운드 규칙 편집

 

규칙 추가 - MYSQL/Aurora - Anywhere-IPv4 - 규칙 저장

 

3306 포트로 mysql 접속이 가능해 집니다.

 

3-1. 우분투 설치

 

EC2 서버에 mysql 연동 라이브러리를 설치

 

터미널에 아래와 같은 코드 입력

sudo apt install mysql-client-core-8.0

 

3-2. 우분투 접속

 

생성한 rds - 연결&보안 - 엔트포인트 복사

엔드포인트는 생성된 rds의 주소를 의미합니다.

 

mysql -u "유저이름" -p -h "엔드포인트"

 

저는 유저이름을 마스터 사용자 이름인 admin으로 하고 엔드포인트를 복사해서 넣었습니다.

 

Enter password:는 rds 생성시 입력한 마스터 사용 암호입니다.

 

다음과 같이 mysql>이 나온다면 정상적으로 rds에 접속이 되었습니다.

 

아래와 같이 코드를 입력해 데이터베이스를 만들어보겠습니다.

CREATE DATABASE clouddb;

 

데이터베이스 확인 명령어

show databases;

 

유저 생성 및 유저에게 권한 부여

mysql> CREATE USER '유저명'@'%' IDENTIFIED BY '비밀번호';

CREATE USER 'rdsuser'@'%' IDENTIFIED BY 'rdsuser1234';

 

권한 부여

mysql> GRANT ALL PRIVILEGES ON 디비명.* TO '유저명'@'%';

GRANT ALL PRIVILEGES ON clouddb.* TO 'rdsuser'@'%';

 

clouddb.*은 clouddb의 모든 권한을 생성한 유저에게 주겠다는 뜻입니다.

 

4. workbench와의 연동

 

터미널의 새로운 윈도우에서 mysql서버를 켜준다.

mysql.server start

 

workbench 실행 - "+버튼" 클릭

 

커넥션 네임은 원하는 아무이름 작성, Hostname은 rds의 엔드포인트 입력, username은 admin으로 

 

password의 store in keychain 클릭 - rds 생성시 만든 마스터 암호 입력 

 

후에 ok 버튼 누르고 ok버튼 한번 더 누르면 생성 완료

 

생성한 clouddb를 기본 스키마로 설정

 

생성된 clouddb에 student 테이블 생성

CREATE TABLE student (
    id int NOT NULL AUTO_INCREMENT,
    name varchar(30),
    email varchar(40),
    num varchar(30),
    PRIMARY KEY(id)
);

 

student 테이블 생성 후 터미널에서 디렉토리를 var/www/html로 이동

 

cd var/www/html

 

vim명령어로 signup.php와 signup_action.php 생성

 

singup.php의 내용

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>예제 회원가입</title>
    </head>
    
    <body>
        <form method="post" action="./signup_action.php">
            <label>이름 <input type="text" name='name'> </label><br>
            <label>이메일 <input type="email" name='email'> </label><br>
            <label>학번 <input type="number" name='num'> </label><br>
            <input type="submit" value='가입하기'>
        </form>
    </body>
</html>

 

signup_action.php의 내용

<?php $name=$_POST['name'];
$email=$_POST['email'];
$num=$_POST['num'];
$con = mysqli_connect("엔드포인트","유저아이디","비밀번호","데이터베이스명") or die ("Can't access DB");
$query = "insert into student (name,email,num) values('".$name."','".$email."','".$num."')";
$resut=mysqli_query($con,$query);
if(!$result) 
{?>
    <script> alert('회원가입이 완료되었습니다.'); location.href=".."; </script> 
<?php
} else {?>
    <script> alert('회원가입에 실패했습니다.\n다시 시도해 주세요.'); location.href=".."; </script>
<?php } ?>

 

저는 저의 엔드포인트와 유저아이디 rdsuser, 비밀번호, 데이터베이스명은 cloubbd로 수정했습니다.

 

수정 후 EC2에서 php와 mysql 연동 라이브러리 설치

 

sudo apt install libapache2-mod-php php-mysql

 

그리고 재시작 

sudo service apache2 restart

 

퍼블릭 ip 주소/signup.php 브라우저 주소창에 입력

 

원하는 이름, 이메일, 학번을 입력 후 가입하기 클릭

 

workbench에서 회원가입이 완료되었는지 확인

 

 

 


참고한 블로그

 

 

 

 

728x90