우당탕탕 개발일지
AWS RDS + MySQL + Node.js 본문
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 |