Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

우당탕탕 개발일지

AWS RDS + MySQL + Node.js 본문

Cloud

AWS RDS + MySQL + Node.js

YUDENG 2024. 1. 18. 01:11
RDS 생성

 

1. RDS 데이터베이스 생성

 

[주의]

프리티어는 AZ db.t2.micro 인스턴스 기준으로 750시간 까지 무료이다.

 

2. 프리 티어가 제공되는 MariaDB 선택

 

3. 프리티어 선택 및 DB 설정

DB Name : dv-server
User Name : admin
User Password : soldesk1.

 

4. 스토리지 용량 설정

과금 요인 중 하나이기 때문에 자동 조정을 비활성화 해주었다.

 

5. DB 연결 설정 및 퍼블릭 액세스 허용

 

6. 초기 DB 설정

백업도 과금 요인이기 때문에 비활성화 해주었다.

RDS 설정

 

1. 보안 그룹 설정

 

2. 인바운드 규칙 편집

 

3. Workbench 연결 등록

엔드포인트 메모장에 복사

Connection Name : to-do-server
Hostname : <엔드포인트>
Username : admin

 

4. Workbench 연결

 

UTF-8 설정

 

1. 파라미터 그룹 생성

 

2. 파라미터 그룹 설정

 

3. 생성된 파라미터 그룹 편집

 

4. char 검색 후 utf8 설정

 

5. collation 검색 후 utf8_general_ci 설정

 

6. DB에 적용

 

DB 테스트용 설정

 

1. 테이블 생성 쿼리문 작성

create table TODOLIST (
TODO_ID int not null auto_increment primary key,
TODO_CONTENT nvarchar(30),
TODO_CHECK boolean
);

insert into TODOLIST(TODO_CONTENT, TODO_CHECK) values('할일1', false);
select * from TODOLIST;

 

2. 전체 선택 (ctrl+a) 후 실행

 

3. 새로 고침 후 생성 확인

 

EC2에서 RDS 접속

 

[ 선수 작업 ] - EC2 생성

  • Name - server
  • OS - Ubuntu
  • 인스턴스 유형 - t3.small
  • 보안그룹 → [편집]
    SSH(22Port)/ 사용자 지정 TCP (8080Port) → 0.0.0.0 허용
  • 키 - Putty용 키로 생성

1. Putty로 EC2 접속

 

초기 비밀번호는 ubuntu 이다.

 

2. MySQL CLI 설치 및 RDS 접속

앞서 메모장에 복사한 엔드포인트와 동일

sudo apt-get install mysql-client

mysql -u admin -p -h <엔드포인트>

 

3. 데이터 확인

 

Node.js

 

[ index.js 작성 ]

  • host : <엔드포인트>
  • user : admin
  • password : soldesk1.
  • database : db_server
const express = require("express");
const cors = require("cors");
const app = express();
const mysql = require("mysql");
const PORT = process.env.port || 8000;

let corsOptions = {
  origin: "*",
  credentials: true, // 사용자 인증이 필요한 리소스 접근
};
app.use(cors(corsOptions));

//sql 연동
var db = mysql.createPool({
  host: "db-server.cabsry9iojbu.us-east-2.rds.amazonaws.com",
  user: "admin",
  password: "soldesk1.",
  database: "db_server",
});

app.get("/home", (req, res) => {
  const sqlQuery = "SELECT * FROM TODOLIST;";
  db.query(sqlQuery, (err, result) => {
    res.send(result);
    console.log(result);
  });
});

var bodyParser = require("body-parser");

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

//todo
app.post("/home", (req, res) => {
  const todo = req.body.todo;
  console.log(todo);

  const sqlQuery =
    "INSERT INTO TODOLIST(TODO_CONTENT, TODO_CHECK) VALUES (?, false);";

  db.query(sqlQuery, [todo], (err, result) => {
    if (err) console.log(err);
    else res.send(result);
  });
});

//login
app.post("/login", (req, res) => {
  const id = req.body.id;
  console.log(id);

  const sqlQuery = `SELECT * FROM USER WHERE USER_ID = '${id}';`;

  db.query(sqlQuery, [id], (err, result) => {
    if (err) console.log(err);
    else res.send(result);
  });
});

//join
app.post("/", (req, res) => {
  const name = req.body.user.USER_NAME;
  const id = req.body.user.USER_ID;
  const password = req.body.user.USER_PASSWORD;
  console.log(req.body.user);

  const sqlQuery =
    "INSERT INTO USER(USER_NAME, USER_ID, USER_PASSWORD) VALUES (?, ?, ?);";
  db.query(sqlQuery, [name, id, password], (err, result) => {
    if (err) console.log(err);
    else res.send(result);
  });
});

//delete
app.delete("/delete", (req, res) => {
  const id = req.body.id;
  console.log(id);

  const sqlQuery = "DELETE from TODOLIST WHERE TODO_ID=?;";
  db.query(sqlQuery, [id], (err, result) => {
    if (err) console.log(err);
    else res.send(result);
  });
});

app.listen(PORT, () => {
  console.log(`running on port ${PORT}`);
});
728x90

'Cloud' 카테고리의 다른 글

네이버 클라우드 Micro Server  (0) 2024.07.10
SAA - AWS 서비스 종류  (0) 2024.02.02
모니터링 구축  (2) 2024.01.05
Linux Git  (0) 2023.12.12
테라폼 3-Tier 아키텍처 구축(2) - VPC, EC2  (1) 2023.11.26