✨ 목표
Node.js 서버에서 MariaDB(MySQL 호환)와 기본 연동을 해보며, users 테이블을 만들고 데이터를 넣고 조회하는 실습을 진행합니다.
📦 주요 작업 요약
- MariaDB용 데이터베이스 생성 (HeidiSQL 사용)
- MySQL 클라이언트 모듈 설치 (mysql)
- 서버에서 MariaDB에 연결하고 users 테이블 생성
- 샘플 데이터 삽입 및 조회
- 연결 종료
✔️ 1. HeidiSQL로 MariaDB 데이터베이스 생성
- 서버에서 사용할 데이터베이스는 미리 만들어져 있어야 합니다.
1️⃣ HeidiSQL 실행
💡 자세한 사항은 아래 링크 게시글 참고
"[ Cafe24 서버 호스팅 ] #2: 개발환경 준비하기" ➡ "✔️ 9. HeidiSQL"
2️⃣ 좌측에서 연결된 서버를 오른쪽 클릭 → [새로 생성] → 데이터베이스
3️⃣ 데이터베이스 생성 완료
✔️ 2. mysql2 설치
- 서버 프로젝트 폴더(server)에서 아래 명령어 입력: (로컬 및 서버에서 전부 입력)
npm install mysql2
mysql모듈은 Node.js에서 MySQL 또는 MariaDB 서버에 연결할 수 있도록 도와줍니다.
✔️ 3. DB 연결 및 테스트 코드 작성
server.js에 아래 코드 작성:
const mysql = require('mysql2');
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const app = express();
const PORT = 3000;
// DB 연결 설정
const connection = mysql.createConnection({
host: '123.123.123.123', // 또는 db.example.com (서버의 IP 또는 도메인)
user: 'root', // DB 사용자 이름
password: '비밀번호!', // DB 비밀번호
database: 'testdb' // 사용할 DB명
});
// CORS 설정 (Angular 앱에서 API 호출 허용)
app.use(cors());
// JSON 요청 바디 파싱
app.use(bodyParser.json());
// DB 연결 시도
connection.connect((err) => {
if (err) {
console.error('DB 연결 실패:', err);
return;
}
console.log('MySQL 데이터베이스에 연결되었습니다.');
// 테이블 생성 (존재하지 않는 경우)
const createTableQuery = `
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
`;
connection.query(createTableQuery, (err, results) => {
if (err) {
console.error('❌ 테이블 생성 오류:', err);
return;
}
console.log('✅ users 테이블이 준비되었습니다.');
// 샘플 데이터 삽입
const insertQuery = `INSERT INTO users (name, email) VALUES (?, ?)`;
const userData = ['홍길동', 'hong@example.com'];
connection.query(insertQuery, userData, (err, results) => {
if (err) {
console.error('❌ 데이터 삽입 오류:', err);
return;
}
console.log('✅ 사용자 추가 완료 (ID:', results.insertId, ')');
// 전체 데이터 조회
connection.query('SELECT * FROM users', (err, rows) => {
if (err) {
console.error('❌ 데이터 조회 오류:', err);
return;
}
console.log('📋 사용자 목록:');
rows.forEach(user => {
console.log(`ID: ${user.id}, 이름: ${user.name}, 이메일: ${user.email}, 생성: ${user.created_at}`);
});
});
});
});
});
// 서버 시작
app.listen(PORT, () => {
console.log(`서버가 http://localhost:${PORT} 에서 실행 중입니다.`);
});
📌 주의사항
이 코드는 연습용이며, 실제 운영 시에는 환경변수로 분리해야 합니다.
👉 이건 다음 편 #8에서 진행합니다.
⭐️ 서버 안에서 실행하는 경우
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '비밀번호',
database: 'testdb'
});
⭐️ 로컬 PC(VSCode 등)에서 원격 DB에 접속할 경우
const connection = mysql.createConnection({
host: '123.123.123.123', // 또는 db.example.com (서버의 IP 또는 도메인)
user: 'root',
password: '비밀번호',
database: 'testdb'
});
이 경우 서버의 MariaDB가 외부 접속 허용 상태이어야 하며, 포트 3306이 방화벽/보안 그룹에서 열려 있어야 접속이 가능합니다.
🔐 추가 체크포인트
1️⃣ MariaDB의 사용자 권한 확인
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '비밀번호';
FLUSH PRIVILEGES;
2️⃣ **MariaDB 설정파일(/etc/my.cnf 또는 /etc/mysql/my.cnf 등)**에 아래 내용이 있어야 외부 접속 허용됨:
[mysqld]
bind-address=0.0.0.0
3️⃣ 3306 포트 개방
## 데이터베이스 권한 확인법
SELECT * FROM mysql.user
✔️ 4. 테스트 결과 예시 확인 (node, nodemon, pm2)
🔍 테스트 결과 예시 (터미널 출력)
서버가 http://localhost:3000 에서 실행 중입니다.
MySQL 데이터베이스에 연결되었습니다.
✅ users 테이블이 준비되었습니다.
✅ 사용자 추가 완료 (ID: 1 )
📋 사용자 목록:
ID: 1, 이름: 홍길동, 이메일: hong@example.com, 생성: Mon May 12 2025 11:17:14 GMT+0900 (대한민국 표준시)
✅ MySQL 연결이 종료되었습니다.
'개발공부기록 > Cafe24 서버 호스팅' 카테고리의 다른 글
[ Cafe24 서버 호스팅 ] #9: 도메인 구매 및 연동하기 (Cafe24) (0) | 2025.05.12 |
---|---|
[ Cafe24 서버 호스팅 ] #8: 환경변수(.env) 관리 및 코드 정리 (0) | 2025.05.12 |
[ Cafe24 서버 호스팅 ] #6: Express API 서버 Cafe24에 배포 및 연동 테스트 (0) | 2025.05.09 |
[ Cafe24 서버 호스팅 ] #5: Angular - Node.js 기본 API 연동 & CRUD 예제 소스 (0) | 2025.05.08 |
[ Cafe24 서버 호스팅 ] #4: Angular 빌드 후 Node.js로 실서버 배포 (PM2 + FileZilla) (2) | 2025.04.30 |