이번 글에서는 Node.js + MySQL (phpMyAdmin) 연동 후,
간단한 회원가입 기능을 구현하는 과정을 예시와 함께 정리합니다.
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 또는 도메인 주소를 입력해야 합니다.
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를 기본키로 설정
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 등으로 암호화 후 저장해야 합니다.
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 기반 로그인 상태 관리
등을 추가 구현할 수 있습니다.