🐋 MySQL/MariaDB로 실전 DB 만들기 — 기초부터 계정/권한까지
잠깐 방심하면 진도가 밀린다… 꾸준히! 도커 인강도 들어야 하는데… 😉
각설하고, 실제 DB를 만들어보자. (MySQL 또는 MariaDB 기준)
✅ 준비 사항
• MySQL 또는 MariaDB 설치 완료
• 터미널에서
• 본문 예제는 직접 복붙 가능한 표준 SQL로 정리했습니다 (스마트따옴표 ❌).
• MySQL 또는 MariaDB 설치 완료
• 터미널에서
mysql -u root -p 접속 가능• 본문 예제는 직접 복붙 가능한 표준 SQL로 정리했습니다 (스마트따옴표 ❌).
1) 데이터베이스 생성
UTF-8(이모지 포함) 안전하게 쓰려면 utf8mb4 + _general_ci(대소문자 구분 없이 비교) 조합을 권장합니다.
-- DB 접속
mysql -u root -p
-- DB 생성 (이미 있다면 IF NOT EXISTS 사용)
CREATE DATABASE IF NOT EXISTS FSI
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
-- 생성 확인
SHOW DATABASES;
-- 작업 대상 지정
USE FSI;
2) 테이블 생성
사용자 계정 정보를 담을 users 테이블. 나중에 해시 비밀번호를 저장할 것이므로 VARCHAR(255)로 충분합니다.
CREATE TABLE IF NOT EXISTS users (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
해설
• id : 각 사용자를 구분할 고유번호, 자동 증가
• username : 50자 제한, 필수, 중복 불가(UNIQUE)
• password : 해시 보관을 가정해 255자 할당 (평문 저장 금지!)
• id : 각 사용자를 구분할 고유번호, 자동 증가
• username : 50자 제한, 필수, 중복 불가(UNIQUE)
• password : 해시 보관을 가정해 255자 할당 (평문 저장 금지!)
3) 테스트 데이터 입력 & 조회
학습용으로만 평문을 넣어보고, 실제 서비스에서는 반드시 해시하세요.
-- (학습용) 평문 비밀번호 예시
INSERT INTO users (username, password)
VALUES ('admin', '1234');
-- (권장) 앱에서 해시 생성 후 저장 (예: PHP의 password_hash)
-- INSERT INTO users (username, password) VALUES ('admin', '<해시된 문자열>');
-- 확인
SELECT * FROM users;
4) 전용 DB 계정 만들기 (root 금지)
root는 모든 DB를 건드릴 수 있으므로 애플리케이션 전용 계정을 만들어 사용합니다.
-- 계정 생성 (해당 서버 로컬 접속만 허용)
CREATE USER 'shbs08290'@'localhost' IDENTIFIED BY '1234';
-- 권한 부여: FSI DB에 한정
GRANT ALL PRIVILEGES ON FSI.* TO 'shbs08290'@'localhost';
-- (참고) 최신 MySQL/MariaDB는 GRANT 즉시 반영. 아래는 호환 목적
FLUSH PRIVILEGES;
-- 권한 확인
SHOW GRANTS FOR 'shbs08290'@'localhost';
보안 팁
• 실제 운영에선
• 원격 접속이 필요하면 호스트를
• 비밀번호는 앱(PHP 등)에서
• 실제 운영에선
ALL PRIVILEGES 대신 필요한 것만 부여하세요 (예: SELECT, INSERT, UPDATE, DELETE).• 원격 접속이 필요하면 호스트를
'%' 대신 특정 IP로 제한: 'appuser'@'203.0.113.10'• 비밀번호는 앱(PHP 등)에서
password_hash()로 해시 후 저장하세요. (기본값 권장)
5) 자주 겪는 오류 & 빠른 점검
- 따옴표 문제: ‘ ’ 같은 스마트따옴표 말고
'단일따옴표를 쓰세요. - 권한 오류:
Access denied→ 사용자/호스트/권한 매칭 확인(SHOW GRANTS ...). - 문자셋 깨짐: DB/테이블/세션 모두
utf8mb4로 통일. P
'해킹스터디' 카테고리의 다른 글
| [Normaltic 웹해킹 입문] CTF 문제풀이 - burp 설정 및 기본문제 풀이(1~5) (2) | 2025.11.21 |
|---|---|
| [Normaltic 웹해킹 입문] 3강 관련 복습&리뷰-②(세션) (0) | 2025.11.04 |
| [Normaltic 웹해킹 입문] 2강 관련 복습&리뷰-②(DB) (0) | 2025.10.29 |
| [Normaltic 웹해킹 입문] 2강 관련 복습&리뷰-① (3) | 2025.10.29 |
| [Normaltic 웹해킹 입문] 1강 주요 과제-APM 환경에서 로그인 페이지 만들기(php 이용, DB 연동X) (0) | 2025.10.28 |