🗄️ 로컬호스트 데이터베이스 생성 가이드

명령줄(CLI)을 사용한 데이터베이스 생성 방법

🐬MySQL 데이터베이스 생성

1 MySQL 서버 시작
Windows:
# MySQL 서비스 시작
net start mysql

# 또는 XAMPP 사용시
cd C:\xampp
mysql_start.bat
Mac/Linux:
# MySQL 시작
sudo service mysql start

# 또는
sudo systemctl start mysql
2 MySQL 접속
# root 사용자로 접속
mysql -u root -p

# 비밀번호 없이 접속
mysql -u root

# 특정 호스트 지정
mysql -h localhost -u root -p
3 데이터베이스 생성
-- 데이터베이스 생성
CREATE DATABASE mydb;

-- UTF-8 인코딩으로 생성
CREATE DATABASE mydb 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

-- 데이터베이스 목록 확인
SHOW DATABASES;

-- 데이터베이스 선택
USE mydb;

-- 현재 데이터베이스 확인
SELECT DATABASE();
4 사용자 생성 및 권한 부여
-- 새 사용자 생성
CREATE USER 'newuser'@'localhost' 
IDENTIFIED BY 'password123';

-- 모든 권한 부여
GRANT ALL PRIVILEGES ON mydb.* 
TO 'newuser'@'localhost';

-- 읽기 전용 권한
GRANT SELECT ON mydb.* 
TO 'newuser'@'localhost';

-- 권한 적용
FLUSH PRIVILEGES;

-- 사용자 목록 확인
SELECT User, Host FROM mysql.user;
✅ MySQL 기본 포트: 3306

🐘PostgreSQL 데이터베이스 생성

1 PostgreSQL 서버 시작
Windows:
# PostgreSQL 서비스 시작
net start postgresql-x64-14

# 또는
pg_ctl -D "C:\Program Files\PostgreSQL\14\data" start
Mac/Linux:
# PostgreSQL 시작
sudo service postgresql start

# 또는
sudo systemctl start postgresql
2 PostgreSQL 접속
# postgres 사용자로 접속
psql -U postgres

# 특정 데이터베이스로 접속
psql -U postgres -d mydb

# 호스트와 포트 지정
psql -h localhost -p 5432 -U postgres
3 데이터베이스 생성
명령줄에서 직접 생성:
# createdb 명령 사용
createdb -U postgres mydb

# 소유자 지정
createdb -U postgres -O newuser mydb

# 인코딩 지정
createdb -U postgres -E UTF8 mydb
SQL 명령으로 생성:
-- 데이터베이스 생성
CREATE DATABASE mydb;

-- 소유자와 인코딩 지정
CREATE DATABASE mydb
WITH OWNER = newuser
ENCODING = 'UTF8'
LC_COLLATE = 'ko_KR.UTF-8'
LC_CTYPE = 'ko_KR.UTF-8';

-- 데이터베이스 목록 확인
\l

-- 데이터베이스 연결
\c mydb

-- 현재 데이터베이스 확인
SELECT current_database();
4 사용자 생성 및 권한 부여
-- 새 사용자(role) 생성
CREATE USER newuser WITH PASSWORD 'password123';

-- 로그인 권한이 있는 role 생성
CREATE ROLE newuser WITH LOGIN PASSWORD 'password123';

-- 데이터베이스 권한 부여
GRANT ALL PRIVILEGES ON DATABASE mydb TO newuser;

-- 스키마 권한 부여
GRANT ALL ON SCHEMA public TO newuser;

-- 테이블 권한 부여
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO newuser;

-- 사용자 목록 확인
\du
✅ PostgreSQL 기본 포트: 5432

🍃MongoDB 데이터베이스 생성

1 MongoDB 서버 시작
Windows:
# MongoDB 서비스 시작
net start MongoDB

# 또는 직접 실행
mongod --dbpath "C:\data\db"
Mac/Linux:
# MongoDB 시작
sudo service mongod start

# 또는
sudo systemctl start mongod

# Homebrew 사용 (Mac)
brew services start mongodb-community
2 MongoDB 접속
# MongoDB Shell 접속
mongosh

# 또는 구버전
mongo

# 특정 호스트와 포트 지정
mongosh "mongodb://localhost:27017"
3 데이터베이스 생성 및 사용
// 데이터베이스 전환 (없으면 자동 생성)
use mydb

// 현재 데이터베이스 확인
db

// 데이터베이스 목록 확인
show dbs

// 컬렉션 생성 (데이터베이스를 실제로 생성)
db.createCollection("users")

// 또는 문서 삽입으로 자동 생성
db.users.insertOne({ name: "홍길동", age: 30 })

// 컬렉션 목록 확인
show collections
4 사용자 생성 및 권한 부여
// admin 데이터베이스로 전환
use admin

// 관리자 계정 생성
db.createUser({
  user: "admin",
  pwd: "password123",
  roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})

// 특정 데이터베이스 사용자 생성
use mydb
db.createUser({
  user: "newuser",
  pwd: "password123",
  roles: [ { role: "readWrite", db: "mydb" } ]
})

// 사용자 목록 확인
db.getUsers()
✅ MongoDB 기본 포트: 27017

일괄 생성 스크립트

MySQL 데이터베이스 및 테이블 일괄 생성:
-- setup_mysql.sql

-- 1. 데이터베이스 삭제 (있을 경우)
DROP DATABASE IF EXISTS mydb;

-- 2. 데이터베이스 생성
CREATE DATABASE mydb
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

-- 3. 데이터베이스 선택
USE mydb;

-- 4. 사용자 생성
CREATE USER IF NOT EXISTS 'appuser'@'localhost'
IDENTIFIED BY 'app123!@#';

-- 5. 권한 부여
GRANT ALL PRIVILEGES ON mydb.*
TO 'appuser'@'localhost';

FLUSH PRIVILEGES;

-- 6. 테이블 생성 예시
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 실행: mysql -u root -p < setup_mysql.sql
PostgreSQL 데이터베이스 및 테이블 일괄 생성:
-- setup_postgres.sql

-- 1. 사용자 생성
CREATE USER appuser WITH PASSWORD 'app123!@#';

-- 2. 데이터베이스 삭제 (있을 경우)
DROP DATABASE IF EXISTS mydb;

-- 3. 데이터베이스 생성
CREATE DATABASE mydb
WITH OWNER = appuser
ENCODING = 'UTF8';

-- 4. 데이터베이스 연결
\c mydb

-- 5. 권한 부여
GRANT ALL PRIVILEGES ON DATABASE mydb TO appuser;
GRANT ALL ON SCHEMA public TO appuser;

-- 6. 테이블 생성 예시
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 실행: psql -U postgres -f setup_postgres.sql
MongoDB 데이터베이스 및 컬렉션 일괄 생성:
// setup_mongo.js

// 1. 데이터베이스 전환
use mydb

// 2. 기존 컬렉션 삭제
db.users.drop()

// 3. 컬렉션 생성
db.createCollection("users", {
  validator: {
    $jsonSchema: {
      bsonType: "object",
      required: ["username", "email"],
      properties: {
        username: {
          bsonType: "string",
          description: "사용자명 (필수)"
        },
        email: {
          bsonType: "string",
          description: "이메일 (필수)"
        }
      }
    }
  }
})

// 4. 인덱스 생성
db.users.createIndex({ username: 1 }, { unique: true })
db.users.createIndex({ email: 1 }, { unique: true })

// 5. 사용자 생성
db.createUser({
  user: "appuser",
  pwd: "app123!@#",
  roles: [ { role: "readWrite", db: "mydb" } ]
})

// 실행: mongosh < setup_mongo.js

💡유용한 팁

🔐 보안 팁:
  • 운영 환경에서는 강력한 비밀번호를 사용하세요
  • 필요한 최소 권한만 부여하세요
  • 외부 접속이 필요 없다면 localhost만 허용하세요
  • 정기적으로 비밀번호를 변경하세요
⚙️ 데이터베이스 삭제:
-- MySQL
DROP DATABASE mydb;

-- PostgreSQL (명령줄)
dropdb -U postgres mydb

-- MongoDB
use mydb
db.dropDatabase()
🔍 연결 테스트:
# MySQL 연결 테스트
mysql -h localhost -u appuser -p mydb

# PostgreSQL 연결 테스트
psql -h localhost -U appuser -d mydb

# MongoDB 연결 테스트
mongosh "mongodb://appuser:app123!@#@localhost:27017/mydb"