React와 Node.js를 사용한 웹 애플리케이션 개발

React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(3)

atomicdev 2024. 9. 17. 08:07
728x90

MySQL 설치 및 Node.js 연결: 기본적인 CRUD 작업 설정

이번 포스팅에서는 MySQL 설치부터 Node.js와 연결하는 과정, 그리고 기본적인 CRUD 작업을 설정하는 방법을 다룹니다. 이 과정을 통해 데이터베이스와 서버를 연동하여 웹 애플리케이션에서 데이터를 저장하고 조회하는 기능을 구현할 수 있습니다.

기본적인 CRUD 작업 설정


1. MySQL 설치 및 데이터베이스 초기화

1.1 MySQL 설치

먼저 MySQL을 시스템에 설치합니다. MySQL 공식 웹사이트에서 운영 체제에 맞는 버전을 다운로드합니다:

  1. MySQL 다운로드 페이지로 이동하여 MySQL Community Edition을 다운로드합니다.
  2. 설치 과정에 따라 MySQL을 설치하고, 설치 도중 루트 계정의 비밀번호를 설정합니다.(여기서는 ReactNode1!로 설정)
  3. 설치가 완료되면 MySQL WorkbenchMySQL 서버가 자동으로 설치되며, 이를 통해 데이터베이스를 관리할 수 있습니다.(MySQL Workbench 설치가 누락되었을 경우 위 사이트에서 MySQL Workbench만 다시 다운받아서 설치할 수 있습니다.)

MySQL Workbench로 MySQL 서버에 연결

1.2 데이터베이스 초기화

MySQL 설치 후, 기본 데이터베이스를 설정하고 초기화합니다.

  • MySQL Workbench 또는 터미널을 사용하여 MySQL에 접속합니다.
mysql -u root -p
 
  • 새 데이터베이스를 생성합니다:
CREATE DATABASE my_database;
  • 생성한 데이터베이스를 확인하고 선택합니다:
SHOW DATABASES;
USE my_database;
  • 데이터베이스에 사용할 테이블을 생성합니다. 예시로 users 테이블을 생성해 보겠습니다:
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100),
    password VARCHAR(100)
);
users 테이블 생성

2. Node.js에서 MySQL과 연결

이제 Node.js 프로젝트에서 MySQL과 연결하여 데이터를 다루는 방법을 알아보겠습니다.

2.1 프로젝트 초기화

  • Node.js 프로젝트 폴더를 생성하고, 초기화합니다:(편의상 C:\ 에서 작업 진행합니다.)
md node-mysql-app
cd node-mysql-app
npm init -y
프로젝트 초기화
  • MySQL 패키지를 설치합니다:

MySQL 패키지를 설치

npm install mysql

2.2 MySQL과 연결 설정

db.js 파일을 생성(C:\node-mysql-app)하여 MySQL과 Node.js를 연결하는 코드를 작성합니다.

// db.js
const mysql = require('mysql');

const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'ReactNode1!', // MySQL 설치 시 설정한 비밀번호
    database: 'my_database'
});

connection.connect((err) => {
    if (err) {
        console.error('Error connecting to MySQL:', err);
        return;
    }
    console.log('Connected to MySQL database');
});

module.exports = connection;

3. 기본적인 CRUD 작업 설정

3.1 Create (데이터 생성)

다음으로, users 테이블에 데이터를 추가하는 Create 기능을 구현해보겠습니다.

// app.js
const express = require('express');
const connection = require('./db'); // MySQL 연결 설정 파일
const app = express();

app.use(express.json()); // JSON 데이터 처리

// 사용자 생성 API
app.post('/users', (req, res) => {
    const { name, email, password } = req.body;
    const query = 'INSERT INTO users (name, email, password) VALUES (?, ?, ?)';
    
    connection.query(query, [name, email, password], (err, result) => {
        if (err) {
            return res.status(500).send('Error creating user');
        }
        res.status(201).send('User created successfully');
    });
});

app.listen(3000, () => {
    console.log('Server is running on http://localhost:3000');
});

3.2 Read (데이터 조회)

데이터베이스에 저장된 사용자 정보를 조회하는 Read 기능을 구현합니다.

// 사용자 목록 조회 API
app.get('/users', (req, res) => {
    const query = 'SELECT * FROM users';
    
    connection.query(query, (err, results) => {
        if (err) {
            return res.status(500).send('Error retrieving users');
        }
        res.json(results);
    });
});
 

3.3 Update (데이터 수정)

기존 데이터를 수정하는 Update 기능을 추가합니다.

// 사용자 정보 수정 API
app.put('/users/:id', (req, res) => {
    const { id } = req.params;
    const { name, email, password } = req.body;
    const query = 'UPDATE users SET name = ?, email = ?, password = ? WHERE id = ?';
    
    connection.query(query, [name, email, password, id], (err, result) => {
        if (err) {
            return res.status(500).send('Error updating user');
        }
        res.send('User updated successfully');
    });
});

3.4 Delete (데이터 삭제)

마지막으로, 데이터를 삭제하는 Delete 기능을 구현합니다.

// 사용자 삭제 API
app.delete('/users/:id', (req, res) => {
    const { id } = req.params;
    const query = 'DELETE FROM users WHERE id = ?';
    
    connection.query(query, [id], (err, result) => {
        if (err) {
            return res.status(500).send('Error deleting user');
        }
        res.send('User deleted successfully');
    });
});

4. 프로젝트 구조

프로젝트 구조는 다음과 같습니다:

node-mysql-app/
│
├── db.js           // MySQL 연결 설정 파일
├── app.js          // Express 서버 및 CRUD API
└── package.json    // 프로젝트 설정 파일

결론

이번 강의에서는 MySQL을 설치하고, Node.js와 연결하여 기본적인 CRUD 작업을 수행하는 방법을 배웠습니다. Express 서버에서 데이터베이스와 상호작용하는 기본적인 기능을 구현했으며, 이를 통해 사용자 관리 시스템 등 다양한 애플리케이션에 활용할 수 있습니다.

728x90