데브코스 웹풀스택 과정/TIL

0926 백엔드 심화 - DBMS(+3306 포트 사용하는 곳 검색)

thinktank911 2025. 9. 26. 12:26

DBMS란

데이터베이스

  • 데이터를 통합하여 효율적으로 관리하기 위한 데이터 집합체를 데이터베이스(DB)라고 한다.
  • 데이터를 구조화하여 관리함으로써 데이터 중복을 막고, 효율적이고 빠른 데이터 연산을 가능하게 한다.

DBMS

  • 데이터베이스를 운영하고 관리하기 위한 DBMS를 통해 데이터베이스를 사용

DBMS종류

  • 운영회사는 다르지만, 데이터베이스에 연산 요청 위해 사용되는 주요 명령어는 동일
    • 오라클, mysql, mariadb
    • elasticsearch(검색엔진) : dbms에 포함됨

SQL
SQL은 데이터베이스에 연산을 요청하기 위해 사용되는 언어로 데이터를 생성, 조회, 수정, 삭제 등과 같은 기능을 수행할 수 있다.

  • INSERT/SELECT/UPDATE/DELETE

 

RDBMS 쓰는 이유

  • Relational DBMS : 데이터간 관계
  • 테이블 분리하고 중복 없애줌으로써 효율성을 높인다.
  • 테이블 분리하니 관계가 생기면서 a테이블 안에 있는 b테이블의 fk로 b테이블의 데이터를 찾을 수 있다.

 

PK와 FK란

  • primary key : PK(기본키)
    => 해당 테이블의 각 row(행)을 유니크(=유일)하게 구별할 수 있는 id값
  • Foreign Key : FK(외래키)
    => A테이블에서 B 테이블의 데이터를 찾아가고 싶을 때 사용하는 key값

[최대한 B테이블의 PK값을 A테이블의 FK로 쓰는 것이 이상적]

 

 

 

테이블분리 장단점

cf. 정규화 = 테이블을 쪼갠다

 

상황 : 게시글 테이블과 사용자 테이블이 각각 존재한다.

  • 장점 : 사용자의 생일을 수정할 때 사용자 테이블만 수정하면 됨
  • 단점 : 원하는 데이터를 찾는데 시간이 걸림 (조인)

 

데이터베이스 연관관계 (1대N)

  • 게시글에선 사용자 찾을 수 있는데 사용자에선 게시글 찾을 수 없다. (1대N연관관계)
  • 테이블 간 어떤 관계를 가지고 있는지 1:1, 1:N, M:N
    게시글 vs 사용자
    1) 사용자 1명 -> 게시글 여러 개(1;N)
    2) 게시글 1개 -> 사용자 1명(1:1)
  • 게시글 테이블 보고 사용자 데이터 확인 : 연관 관계
    => 게시글 테이블을 보고 사용자랑 어떤 관계인지 파악이 된다.
  •  사용자 테이블 보고 게시글 데이터 확인 x => 연관관계 파악 x

 


유튜브 실습

간단하게 ERD 고려해보기


채널 vs 사용자

1) 사용자 1명 -> 채널 여러 개(1;N)
2) 채널 1개 -> 사용자 1명(1:1)

 

채널 - 사용자 테이블 분리

  • 채널 테이블 보고 사용자 데이터 확인 : 연관 관계
    => 채널 테이블을 보고 사용자랑 어떤 관계인지
  • 사용자 테이블에서는 채널 데이터 찾아갈 수 없다.

관계의 주인이 누군지 살펴보면 연관관계와 pk, fk를 쉽게 파악할 수 있다.


mysql workbench 소개 및 설치

GUI로 SQL 다루기

 

mysql workbench 설치 시 주의사항

1) 운영체제나 버전은 내 컴퓨터 환경에 맞춰 자동으로 셋팅해준다. 두가지 버전이 나오는데 그 중에서 용량이 많은 걸 선택한다.

 

2) 여러가지 Setup Type 중에 custom 선택 => mysql server와 workbench만 선택하여 설치한다.

 

참고 : 

https://dearmycode.tistory.com/15

 

MySQL 설치 및 WorkBench 사용하기

여러 DBMS 데이터베이스 관리시스템 중 현재 교육받는 과정에서는 MySQL을 사용한다. 작년 국비학원 다닐 때는 Oracle DB를 사용했었던지라 이번에 처음 MySQL을 설치했다. 그래서 MySQL 설치법과 아직

dearmycode.tistory.com


<이슈>

mysql workbench 설치 시 서버 셋팅할 때 포트번호가 이미 사용되고 있다고 떠서 애먹었다.

 

3306포트를 사용한 기억이 없는데 (예전에 사용했다가 지웠던 거 같은데 계속 있음) 사용하고 있다 해서 일단 포기.. 3307포트번호로 다시 셋팅을 해서 도커를 돌리고 있고, GUI 툴로 HeidiSQL 쓰고 있어서 거기서도 3307포트로 연결했다. 그래서 workbench도 툴만 바뀐거니까 3307 포트로 셋팅하려고 했는데 이미 쓰고 있고, 다른 포트 설정 안하면 아예 페이지 이동이 안돼서 당황했다. 포트번호 다시 파야하나 했는데 찾아보니 다행히 그건 아니고 그냥 서버셋팅 취소하고 workbench 메인화면에서 세션 설정해주면 되었다.

일단 3306 포트를 어디서 사용하고 있는지 파악하는 게 우선이었다.

 

  • netstat -ano | findstr :3306 → PID 확인
  • tasklist /FI "PID eq <PID번호>" → 어떤 프로그램인지 확인

mysqld.exe가 점유중이었는데 내 PC에 설치된 MySQL 서버가 로컬에서 기본 포트(3306)로 실행 중이라는 뜻이다.

잘 기억이나진 않지만 예전에 로컬로 설치했나보다. 그렇다면 DB 툴에서 3306포트로 접근해 mysql을 실행해보려 했는데 계속 에러가 난다. 이 문제는 시간이 나면 풀어보기로 한다.