MySQL 설치 및 사용 가이드

MySQL 설치 절차

윈도우 환경 기준으로 설치 방법을 안내합니다.

1단계: MySQL 다운로드 및 압축 해제

  • 공식 웹사이트에서 최신 버전 다운로드
  • 원하는 디렉토리에 압축 파일 해제

2단계: 설정 파일 구성

[mysqld]
port=3306
basedir=C:\Programs\MySQL
datadir=C:\Programs\MySQL\data
max_connections=200
max_connect_errors=10
character-set-server=utf8mb4
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password

[client]
default-character-set=utf8mb4

3단계: 초기화 실행

  1. 관리자 권한으로 명령 프롬프트 실행
  2. bin 폴더 이동 후 mysqld --initialize --console 입력
  3. 생성된 비밀번호를 반드시 기록

4단계: 서비스 등록

mysqld install MySQLService

5단계: 서비스 제어

net start MySQLService
net stop MySQLService

연결 방법

명령행 접근

mysql -uadmin -p -P3306 -hlocalhost

초기 비밀번호 변경 필수:

ALTER USER 'admin'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPass1!';

Navicat 연동

12버전 사용 시 호스트: 127.0.0.1, 포트: 3306, 인증 방식: Native Password 설정

Node.js 연동 예시

const mysql = require('mysql');
const pool = mysql.createPool({
  host: 'localhost',
  user: 'admin',
  password: 'NewPass1!',
  database: 'school_db'
});

pool.query('SELECT 1 + 1 AS result', (err, rows) => {
  console.log(rows[0].result);
});

삭제 절차

cd C:\Programs\MySQL\bin
mysqld remove

다중 인스턴스 구성

포트 개념

IP 주소로 서버 식별, 포트로 특정 애플리케이션 구분

설치 단계

  1. 복사 후 폴더명 변경 (ex: mysql_3307)
  2. my.ini 파일 생성, 포트 수정 (ex: 3307)
  3. 관리자 명령 프롬프트에서 mysqld --initialize --console 실행
  4. 서비스 등록 시 인스턴스명 추가: mysqld install MySQLInstance3307
  5. 서비스 시작: net start MySQLInstance3307
  6. 접속 명령: mysql -uadmin -p -P3307

서브유저 생성

CREATE USER 'analyst'@'localhost' IDENTIFIED BY 'SecurePass2!';

데이터베이스 관리

생성

CREATE DATABASE school_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

목록 확인

SHOW DATABASES;

선택

USE school_db;

테이블 설계

정규화 원칙

  1. 1NF: 분리 불가능한 원자값
  2. 2NF: 고유 키에 대한 완전 의존
  3. 3NF: 다른 테이블에 존재하는 필드 제외

테이블 생성

CREATE TABLE student (
  id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL DEFAULT 'Unknown',
  age INT UNSIGNED NOT NULL DEFAULT 0,
  id_number VARCHAR(18) NOT NULL DEFAULT '',
  PRIMARY KEY (id)
);

CRUD 작업

삽입

INSERT INTO teacher (name, age, id_number) 
VALUES ('Kim', 45, '123456789012345678');

삭제

DELETE FROM teacher WHERE id = 10;
DELETE FROM teacher; -- 전체 삭제

수정

UPDATE teacher SET age = 50 WHERE id = 15;
UPDATE teacher SET age = 30, id_number = '987654321012345678' WHERE id = 15;

조회

SELECT * FROM teacher;
SELECT name, age FROM teacher WHERE age > 30;

조건 검색

연산자설명예시
<작은 값WHERE age < 30
>큰 값WHERE age > 50
BETWEEN범위 내WHERE age BETWEEN 20 AND 40
LIKE패턴 매칭WHERE name LIKE 'Lee%'

JOIN 연산

LEFT JOIN

SELECT * FROM course LEFT JOIN teacher ON course.teacher_id = teacher.id;

INNER JOIN

SELECT c.*, t.name FROM course c INNER JOIN teacher t ON c.teacher_id = t.id;

정렬

SELECT * FROM teacher ORDER BY age DESC, id ASC;

집계 함수

SELECT AVG(age), COUNT(*) FROM teacher;

조건 함수

SELECT name, IF(age > 18, '성인', '청소년') AS status FROM student;

날짜 함수

SELECT CURDATE() AS today, NOW() AS current_time;

정규표현식

SELECT * FROM student WHERE name REGEXP '^김';

태그: MySQL설치 데이터베이스관리 SQL문법 정규화 JOIN연산

6월 7일 18:29에 게시됨