Node.js + MySQL (phpMyAdmin) 회원가입 예제 정리

박태욱·2022년 1월 17일
0

이번 글에서는 Node.js + MySQL (phpMyAdmin) 연동 후,
간단한 회원가입 기능을 구현하는 과정을 예시와 함께 정리합니다.

1. MySQL 연동 시 주의 사항

mysql.createConnection() 또는 mysql2.createConnection()으로 DB 연결 시
host, user, password, database 값을 정확하게 설정해야 합니다.

const mysql = require('mysql2');

const client = mysql.createConnection({
    host: 'localhost',    // 또는 DB 서버 주소
    user: 'test',
    password: 'test',
    database: 'user'
});

host 주소가 local이 아닌 경우, 서버 IP 또는 도메인 주소를 입력해야 합니다.

2. MySQL에서 회원 테이블 만들기

phpMyAdmin 또는 MySQL CLI에서 다음과 같이 user 테이블을 생성합니다.

CREATE TABLE user (
    id VARCHAR(50) NOT NULL,
    password VARCHAR(50),
    salt VARCHAR(50),
    name VARCHAR(50),
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

주요 설정
• 모든 컬럼 크기 : VARCHAR(50) (필요에 따라 조정)
• 문자셋 : utf8_general_ci
• id를 기본키로 설정

3. Node.js 회원가입 예제

메인 페이지 및 회원가입 페이지

app.get('/', (req, res) => {
    console.log('메인페이지 작동');
    console.log(req.session);

    if (req.session.is_logined === true) {
        res.render('index', {
            is_logined: req.session.is_logined,
            name: req.session.name
        });
    } else {
        res.render('index', {
            is_logined: false
        });
    }
});

app.get('/register', (req, res) => {
    console.log('회원가입 페이지');
    res.render('register');
});

회원가입 요청 처리

app.post('/register', (req, res) => {
    console.log('회원가입 하는 중');

    const body = req.body;
    const id = body.id;
    const name = body.name;
    const age = body.age;
    const pw = body.pw;

    // ID 중복 확인
    client.query('SELECT * FROM user WHERE id = ?', [id], (err, data) => {
        if (data.length === 0) {
            // 중복 없음 → 회원가입 진행
            console.log('회원가입 성공');
            client.query(
                'INSERT INTO user (id, name, age, pw) VALUES (?, ?, ?, ?)',
                [id, name, age, pw]
            );
            res.redirect('/');
        } else {
            // 중복 → 회원가입 실패
            console.log('회원가입 실패');
            res.send('<script>alert("이미 존재하는 ID입니다."); history.back();</script>');
        }
    });
});

주요흐름
1. 클라이언트에서 회원가입 정보 전달
2. DB에서 ID 중복 체크
3. 중복이 없으면 INSERT로 저장
4. 중복 시 alert 띄우고 되돌아감
! 주의 : 실서비스에서는 비밀번호는 반드시 bcrypt 또는 argon2 등으로 암호화 후 저장해야 합니다.

4. 데이터베이스 seq란?

MySQL에서는 AUTO_INCREMENT, Oracle에서는 SEQUENCE를 사용합니다.

SEQUENCE (Oracle)
• 유일한 숫자 값을 자동으로 생성해주는 객체
• 주로 PRIMARY KEY 값을 자동으로 할당할 때 사용

   CREATE SEQUENCE user_seq
   START WITH 1
   INCREMENT BY 1;

MySQL에서는 AUTO_INCREMENT로 대체됩니다.

CREATE TABLE user (
    id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(50),
    password VARCHAR(50),
    PRIMARY KEY (id)
);

이렇게 하면 Node.js + MySQL + phpMyAdmin 기반의
기본 회원가입 기능 + 테이블 구조 + 개념 정리까지 깔끔하게 마무리됩니다.

추후에는 다음 단계로
• 로그인 기능 추가
• 비밀번호 암호화 적용
• 세션 / JWT 기반 로그인 상태 관리

등을 추가 구현할 수 있습니다.

profile
개발 노트

0개의 댓글