반응형
내부 네트워크 구축

네트워크를 공부하다 보면 가장 먼저 실습하게 되는 부분이 바로 내부 네트워크를 구성하는 것입니다.

이 글에서는 내부 네트워크를 가상으로 구축해 보면서, 실습을 통해 어떻게 네트워크를 설계하고, 설정할 수 있는지 알아보겠습니다.


목표 설정

  1. 내부망 가상 구축
    네트워크를 설계하고 가상으로 구축하여 실습합니다.
  2. 내부 네트워크 가상 설계
    설계도를 기반으로 각 네트워크 장비와 IP를 할당합니다.
  3. 네트워크 IP 할당 내용 정리
    네트워크의 각 장비에 맞는 IP를 설정합니다.
  4. 프로세스 기술 요약 및 명령어 정리
    네트워크 구축 시 필요한 명령어를 정리합니다.

내부 서버 설계

내부 네트워크 구축을 마친 후, 내부 서버 설계를 진행합니다. 서버 설계가 중요한 이유는, 각 서버와 클라이언트가 원활하게 통신할 수 있도록 하기 위함입니다. 또한, 서버들이 네트워크에 제대로 통합되도록 설정해야 합니다.

  1. 기본 준비
    • EVE 사이트 접속 및 구성
      EVE-NG(Emulated Virtual Environment for Network Gateways)는 가상화된 네트워크 환경을 만들 수 있는 도구입니다.
    • VMware 환경 구성
      VMware는 가상 머신을 이용한 실습 환경을 구성할 수 있는 도구로, 이를 통해 여러 서버 및 네트워크 장비를 구현할 수 있습니다.

EVE-NG와 VMware란?

EVE-NG는 네트워크 시뮬레이션을 위한 에뮬레이터로, 다양한 네트워크 장비를 가상 환경에서 실행하고 실험할 수 있는 도구입니다. 이를 통해 실제 환경처럼 네트워크를 구성하고 문제를 해결할 수 있습니다.
VMware는 가상화 소프트웨어로, 물리적인 서버 없이도 가상화된 환경을 구축하여 여러 서버를 동시에 운영할 수 있게 해줍니다. 이를 통해 네트워크 실습을 가상 환경에서 구현할 수 있습니다.


배경 및 목표

이 네트워크 구축의 목적은 사이버 보안 기업의 조직도 및 네트워크 구성을 바탕으로 내부 네트워크를 설계하는 것입니다. 이를 통해:

  • 효과적인 네트워크 분배 및 재구성
    네트워크의 성능과 효율성을 높입니다.
  • 보안 강화
    각 부서별로 VLAN을 할당하여 보안을 강화합니다.
  • 원활한 네트워크 서비스 제공
    네트워크가 원활하게 운영되도록 합니다.

내부망 가상 구축

이제 기업의 조직도를 바탕으로 네트워크를 설계하고, VLAN을 어떻게 할당할지 구상해보겠습니다. 내부 네트워크 설계는 다음과 같은 목표로 진행됩니다:

  1. 조직도 및 배치도 분석
    사무실 배치도와 조직도를 기반으로 각 부서에 VLAN을 할당합니다.
  2. 보안을 강화하고 효율적인 통신을 위한 VLAN 설계
    C 레벨, 개발팀, 경영지원팀, 영업팀, 마케팅팀 등 부서별로 VLAN을 할당하고, 보안 강화를 위한 설정을 적용합니다.

내부 네트워크 가상 설계

구성된 조직도와 배치도를 기반으로 내부망을 설계합니다. 네트워크 통신 오류가 발생할 수 있으므로, 모든 포트를 이중화하여 안정성을 확보하고, 두 개의 인터넷 라우터를 연결하여 외부 네트워크와의 연결을 다중화합니다. 각 부서별 VLAN을 할당하여 보안을 강화하고, 서버실을 구성하여 7대의 서버와 100대의 PC를 설정합니다.

  • C 레벨 VLAN 99
  • 개발팀 VLAN 11
  • 경영지원팀 VLAN 12
  • 영업팀 VLAN 13
  • 마케팅팀 VLAN 14

네트워크 IP 할당 내용 정리

설계를 바탕으로 EVE를 사용하여 실제 네트워크를 구성해봅니다. 설정은 아직 진행하지 않았으며, 장비와 포트만 연결한 상태입니다. 이후, 각 장비에 IP를 할당하고, 설정을 진행할 예정입니다.

  • 기본 IP 설정
    PC와 서버에 물리적 IP를 설정하고, 나머지 장비들에 대한 기본 설정을 집어넣습니다.
  • VLAN 1 관리용 IP
    관리용 IP는 VLAN 1에 설정하여, 네트워크 관리자가 네트워크를 관리할 수 있도록 합니다.


프로세스 요약

  1. 스위치 구간에 Trunk & Ether Channel 구성 및 RSTP 활성화
  2. 스위치 관리용 IP 주소 설정 (VLAN 1)
  3. 모든 스위치에 VLAN 11개 생성 및 Access 설정
  4. Inter-VLAN 설정 및 NAT 설정
  5. HSRP를 이용한 로드 분산 및 장애 대비

명령어 예시

명령어들을 적절히 사용하여 네트워크를 구성합니다. 아래는 주요 명령어들입니다:

  • 기본 설정 명령어
hostname <장비 이름>
enable secret cisco
no ip domain-lookup
no cdp run
  • VLAN 생성 및 설정
vlan 11
vlan 12
  • 트렁크 포트 설정
switchport mode trunk
switchport trunk encapsulation dot1q

서버 설계 및 네트워크 통합

이제, 네트워크와 서버를 통합하여 내부 서버들을 설정합니다. 서버는 각 VLAN에 맞춰 다음과 같이 구성됩니다:

  • DHCP 서버 (VLAN 101)
  • FTP 서버 (VLAN 102)
  • Web 서버 (VLAN 103)
  • DNS 서버 (VLAN 104)
  • Mail 서버 (VLAN 105)

서버들은 네트워크와 통합되어야 하므로, 각 서버에 맞는 네트워크 설정을 해야 합니다.

  • DMZ Web 서버 구성
     
ip nat inside source static tcp <내부 IP> 80 <외부 IP> 80
  • DHCP 서버 구성
ip helper-address <DHCP 서버 IP>
  • FTP 서버 구성
    서버 공유 권한을 부여하여, 네트워크에서 접근할 수 있게 합니다.

테스트 및 최종 설정

모든 네트워크 구성과 서버 설정이 완료되면, 실제 PC에서 접속 테스트를 진행합니다. DHCP, FTP, Web, DNS, 이메일 서버 등 각 서비스들이 정상적으로 작동하는지 확인하고, 네트워크 트래픽이 적절하게 처리되는지 확인합니다.


이 네트워크 구축 실습을 통해, 네트워크 설계 및 보안을 고려한 효율적인 내부망 구축 방법을 배우고, 각 단계별로 필요한 명령어와 설정들을 실습할 수 있었습니다.

이 과정을 통해 내부망의 구축뿐만 아니라 보안을 강화하고 네트워크의 효율성을 높일 수 있음을 알 수 있었습니다.


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

구독 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형
반응형

root # pvs
PV       VG       Fmt  Attr  PSize  PFree
/dev/sda2 centos  lvm2 a--   <19.00g 0
/dev/sdb1         lvm2 ---  <100.00g <100.00g

먼저 알고 계셔야 할 내용

 

LVM 볼륨이란?

LVM(Logical Volume Management)은 리눅스에서 논리적 볼륨을 관리하기 위한 시스템입니다. 하드디스크나 SSD를 물리적으로 나누지 않고, 논리적으로 유연하게 파티션을 구성하고 관리할 수 있도록 해줍니다. LVM을 사용하면 볼륨 크기 조정이 용이하고, 디스크 추가 및 확장이 쉽습니다.

  • LVM 구성 요소:
    • PV (Physical Volume): 물리적 디스크나 파티션.
    • VG (Volume Group): 여러 PV를 모은 논리적 그룹.
    • LV (Logical Volume): VG 내에서 실제로 데이터를 저장하는 논리적 볼륨.
    • PE (Physical Extent): PV를 나눈 작은 블록 단위.
    • LE (Logical Extent): LV를 나눈 작은 블록 단위.

파티션이란?

파티션은 하드디스크를 효율적으로 나누어 사용하는 방식입니다. 파티션을 나누면 운영체제에서 디스크를 효율적으로 사용할 수 있게 됩니다. LVM에서는 파티션을 논리적 볼륨으로 관리할 수 있도록 지원합니다.


LVM 구성 순서

  1. LVM을 구성할 디스크 선택
  2. 사용하고자 할 디스크를 선택합니다. 여기서는 /dev/sdb를 예로 들겠습니다.
  3. 선택한 디스크(파티션)의 시스템 타입을 LVM으로 지정하여 파티션을 생성
  4. 디스크를 파티셔닝한 뒤, 해당 파티션의 시스템 ID를 LVM으로 변경합니다.
root # fdisk /dev/sdb
Command (m for help): n        # 새 파티션 추가
Select (default p): p          # 파티션 유형 선택
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048): (Enter)
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): (Enter)
Command (m for help): t        # 파티션 타입 변경
Hex code (type L to list all codes): 8e  # Linux LVM 타입
Command (m for help): p        # 파티션 정보 확인
Command (m for help): w        # 설정 저장

PV (물리적 볼륨) 생성

이제 /dev/sdb1 파티션을 물리적 볼륨(PV)으로 설정합니다.

root # pvcreate /dev/sdb1

pv 명령어 예시:

root # pvs
PV       VG       Fmt  Attr  PSize  PFree
/dev/sda2 centos  lvm2 a--   <19.00g 0
/dev/sdb1         lvm2 ---  <100.00g <100.00g

VG (볼륨 그룹) 생성

물리적 볼륨(PV)을 사용해 볼륨 그룹(VG)을 생성합니다.

root # vgcreate testvg /dev/sdb1

vgs 명령어 예시:

root # vgs
VG     #PV   #LV  #SN  Attr   VSize   VFree
centos 1     2    0    wz--n- <19.00g  0
testvg 1     0    0    wz--n- <100.00g <100.00g

LV (논리적 볼륨) 생성

볼륨 그룹(VG)을 이용해 논리적 볼륨(LV)을 생성합니다.

root # lvcreate -n datalv -L 70GB testvg
root # lvcreate -n backuplv -l +100%FREE testvg

lvs 명령어 예시:

root # lvs
LV        VG      Attr    LSize   Pool   Origin   Data%   Meta%   Move   Log   Cpy%Sync   Convert
root      centos  -wi-ao-- <17.00g
swap      centos  -wi-ao--   2.00g
backuplv  testvg  -wi-a---- <30.00g
datalv    testvg  -wi-a----  70.00g

파일 시스템 포맷

생성된 논리적 볼륨에 파일 시스템을 생성합니다. 여기서는 ext4 파일 시스템을 사용합니다.

root # mkfs.ext4 /dev/testvg/datalv
root # mkfs.ext4 /dev/testvg/backuplv

LV 파일 시스템을 마운트

논리적 볼륨을 마운트할 디렉토리를 생성하고 마운트합니다.

root # mkdir /data
root # mkdir /backup
root # mount /dev/testvg/datalv /data
root # mount /dev/testvg/backuplv /backup

df -h 명령어 예시:

root # df -h
/dev/mapper/testvg-datalv    70G   53M   67G   1% /data
/dev/mapper/testvg-backuplv  30G   45M   28G   1% /backup

자동 마운트 설정

/etc/fstab 파일에 자동 마운트를 설정합니다. 시스템 재부팅 후에도 자동으로 마운트되도록 설정합니다.

root # vi /etc/fstab
/dev/testvg/datalv   /data   ext4   defaults   0 0
/dev/testvg/backuplv /backup ext4   defaults   0 0

변경 후 mount -a 명령어로 fstab 설정을 적용합니다.


위의 실습 과정을 통해 리눅스에서 LVM을 구성하고, 논리적 볼륨을 생성하여 파일 시스템을 마운트하는 방법을 설명했습니다.

이 과정은 리눅스 시스템에서 디스크를 유연하게 관리하고, 필요에 따라 용량을 확장하거나 축소할 수 있는 강력한 방법을 제공합니다.


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

이웃 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형
반응형
 

하드링크 (Hard Link)

 

하드링크는 원본 파일과 동일한 데이터를 가리키는 또 다른 이름입니다.

원본 파일과 하드링크가 같은 아이노드 번호를 가집니다. 즉, 이 두 파일은 사실상 같은 파일입니다.

왜 하드링크를 배워야 할까요?

여러분은 파일을 여러 곳에서 사용해야할때 어떻게 합니까? 같은 파일을 여러 이름으로 저장하거나, 다른 위치에서 바로 접근할 수 있다면 더 효율적으로 관리할 수 있겠죠? 하드링크는 이런 문제를 해결해 줍니다.

시스템에서 파일 중복을 줄이고 디스크 공간을 절약할 수 있기 때문입니다.

예를 들어, 백업 시스템에서 동일한 파일을 여러 장소에 두고 관리해야 할 때, 하드링크를 사용하면 실제 파일을 복사하지 않고도 여러 위치에서 동일한 파일을 참조할 수 있습니다.

비유 법으로 배워봅시다
"이름 바꾸기"

하드링크는 마치 "이름을 바꾼 파일"과 같습니다.

예를 들어, 당신이 친구에게 '홍길동'이라는 이름을 줬다면, '홍길동'이라는 이름으로 불리는 사람이 바로 그 친구입니다.

이제 '길동이'라는 이름을 다시 붙였다고 생각해 보세요.

그 친구는 여전히 같은 사람이지만, 두 이름을 다 사용할 수 있게 된 것입니다. 이 경우 '홍길동'과 '길동이'는 사실 같은 사람(파일)입니다.

  • 같은 아이노드 번호: 하드링크 파일은 원본 파일과 정확히 동일한 데이터 블록을 가리킵니다. 즉, 파일의 실제 내용은 동일합니다.
  • 변경사항 동기화: 만약 '홍길동' 이름으로 파일을 수정하고, '길동이' 이름으로도 파일을 수정하면, 두 이름 모두 동일한 내용을 가리키고 있기 때문에 수정 사항이 동기화됩니다.
  • 파일 삭제: 원본 파일(홍길동)을 삭제해도, '길동이'는 여전히 존재하고, 그 파일의 내용은 변하지 않습니다. 사실 원본 파일이 삭제되었을 때는, 그 파일을 참조하는 다른 링크가 남아있기 때문에 파일이 삭제되지 않은 것처럼 보입니다.

파일 시스템에서 중요한 데이터 파일을 여러 곳에서 참조해야 할 때, 하드링크를 사용하면 데이터 중복을 줄이고 디스크 공간을 절약할 수 있습니다.

예를 들어, 서버의 데이터베이스 파일이 여러 디렉토리에서 필요할 때, 하드링크를 사용하여 하나의 원본 파일을 여러 이름으로 참조할 수 있습니다.

하드링크는 복사본을 만들지 않고도 파일을 여러 곳에서 사용할 수 있게 해 줍니다.

  1. 원본 파일 test.txt가 있다고 가정해 보겠습니다.
  2. 하드링크 test_link.txt를 만들면, 두 파일은 같은 아이노드를 가리킵니다.
  3. 두 파일 중 하나를 수정하면 다른 파일에도 수정 사항이 반영됩니다. 원본 파일을 삭제해도, 하드링크가 여전히 동일한 파일을 가리키고 있으므로 파일이 그대로 남아 있습니다.
 

소프트링크 (Soft Link, Symbolic Link)

소프트링크(심볼릭 링크)는 원본 파일을 가리키는 "통로" 역할을 합니다.

소프트링크는 원본 파일의 경로를 저장하는 별도의 파일로, 실제 데이터는 저장하지 않습니다.

이 링크는 원본 파일의 위치를 알려주는 주소와 같은 역할을 합니다.

왜 소프트링크를 배워야 할까요?

소프트링크는 시스템 관리에서 파일 경로를 효율적으로 관리하는 데 매우 유용합니다.

예를 들어, 자주 변경되는 설정 파일이나 라이브러리 파일에 대한 경로를 소프트링크로 관리하면, 시스템 업데이트나 변경이 있을 때 소프트링크만 수정하면 되기 때문에 관리가 용이해집니다.

또한, 시스템 설정이나 프로그램 파일들을 여러 곳에서 사용할 때, 소프트링크를 사용하여 경로를 간편하게 지정할 수 있습니다.

비유 법으로 배워봅시다
"주소를 적어 놓은 종이"

소프트링크는 마치 원본 집의 주소를 적어 놓은 종이와 같습니다.

예를 들어, 당신이 친구 집에 가고 싶을 때, 친구의 집 주소를 적어놓은 종이를 받고, 그 주소로 가면 친구를 만날 수 있죠.

이 주소 종이(소프트링크)는 원본 집(파일)의 위치를 가리키고 있습니다.

그러나 이 종이 자체는 집이 아니고, 그저 집의 위치를 알려주는 역할만 합니다.

만약 친구 집이 이사를 가면, 그 주소 종이는 더 이상 유효하지 않게 됩니다.

  • 다른 아이노드 번호: 소프트링크는 원본 파일과 다른 아이노드 번호를 가집니다. 소프트링크 파일은 원본 파일의 경로를 가리키는 문자열로 존재합니다.
  • 동기화 없음: 소프트링크에서 수정한 내용은 원본 파일에 영향을 주지 않습니다. 소프트링크 파일을 수정한다고 해서 원본 파일의 내용은 바뀌지 않습니다.
  • 원본 삭제 시 깨짐: 원본 파일이 삭제되면, 소프트링크는 더 이상 유효하지 않게 됩니다. 즉, 원본 파일이 사라지면, 소프트링크는 '깨진 링크'가 되어 더 이상 작동하지 않습니다.

소프트링크는 파일 경로를 효율적으로 관리하고, 시스템 환경에서 파일을 쉽게 참조할 수 있게 해줍니다. 예를 들어, 여러 버전의 소프트웨어가 설치되어 있을 때, 최신 버전의 소프트웨어를 소프트링크로 가리키면, 소프트웨어 경로를 쉽게 변경할 수 있습니다. 또한, 프로그램의 설정 파일이 여러 디렉토리에서 필요할 때, 소프트링크를 사용하여 중앙 집중식으로 관리할 수 있습니다.

  1. 원본 파일 test.txt가 있고, 소프트링크 test_link.txt를 만들었다고 합시다.
  2. 소프트링크 파일은 test.txt라는 파일의 위치만 알고 있을 뿐, 파일 자체를 가지고 있지 않습니다.
  3. test_link.txt를 열면, 자동으로 test.txt로 이동하여 내용을 볼 수 있습니다. 하지만 원본 파일을 삭제하면, test_link.txt를 열려고 할 때 오류가 발생할 것입니다. (깨진 링크)

핵심 차이점

구분 하드링크 소프트링크
아이노드 번호 원본 파일과 동일한 아이노드 번호를 가짐 원본 파일과 다른 아이노드 번호를 가짐
동기화 수정 사항이 원본 파일과 하드링크 파일에 동기화됨 수정 사항이 동기화되지 않음
파일 삭제 시 원본 파일 삭제 후에도 하드링크는 삭제되지 않음 원본 파일 삭제 시 소프트링크는 깨짐
파일 내용 원본 파일과 내용이 동일 원본 파일의 경로를 가리키는 통로(주소) 역할

 


혹시 아이노드에 대해 아직 모르신다면 아래 링크에서 확인해주세요!

https://jdcyber.tistory.com/87

 

리눅스 파일 시스템의 핵심, 아이노드(i-node)란 무엇인가?

리눅스의 아이노드 (i-node)아이노드(i-node)는 리눅스 파일 시스템에서 사용되는 데이터 구조입니다.간단히 말하면, 파일에 대한 중요한 정보를 담고 있는 "주민등록증" 같은 역할을 합니다.이 아

jdcyber.tistory.com


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

구독 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

 
반응형
반응형

오늘은 MySQL에 대한 개념 글에 이어서

아직 mysql에 대해 모르시거나

이 글 전에 읽어보시지 못하셨다면

아래 링크를 한번 보고 오시길 추천드립니다.

(작성 중)

 

Mysql을 배우고 나서 아래 실습을 통해

간단한 명령어를 직접 연습해 보고

sql이 어떤 식으로 운용될 수 있는지

직접 알아보도록 하겠습니다.

주의

Sql 구문은 하나의 명령이 종료가 되면 

세미콜론(;)을 붙여주어야 합니다.

만약 세미콜론이 생략되면

2차 프롬프트(->)가 시작됩니다.

무조건 끝에 세미콜론을 붙이신다고 

생각해 주세요

MySQL 접속
bee@bee-box:~$ 
bee@bee-box:~$cd /var/www/bWAPP
bee@bee-box:/var/www/bWAPP$

root@bee-box:/var/www/bWAPP# mysql -u root -p

Enter password: bug
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.0.96-0ubuntu3 (Ubuntu)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| bWAPP              | 
| drupageddon        | 
| mysql              | 
+--------------------+
4 rows in set (0.00 sec)

cd /var/www/bWAPP를 이용하여

bWAPP 디렉터리로 이동합니다.

mysql -u root -p 명령어와 패스워드 

bug를 이용하여 Mysql 로컬 접속을 실시합니다.

show databases를 이용하여 

데이터베이스를 확인합니다.

가장 위에 있는 Information_schema 

Mysql에서 운영되는 데이터베이스, 

테이블, 칼럼의 모든 정보를 관리하는 DB입니다.

아래 보이는 bWAPP과 drupageddon 

bWAPP 시나리오에 사용하는 DB이며

맨 아래 mysql은 Mysql 운영과 관련된 

정보가 저장된 DB입니다.

 

DataBase 생성 및 삭제
mysql> create database test;
Query OK, 1 row affected (0.00 sec)

mysql> show databases; 
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| bWAPP              | 
| drupageddon        | 
| test               | 
| mysql              | 
+--------------------+
5 rows in set (0.00 sec)

mysql> drop database test;
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| bWAPP              | 
| drupageddon        | 
| mysql              | 
+--------------------+
4 rows in set (0.00 sec)

create database ; 명령어를 이용하여 

데이트베이스를 생성하고

drop database ; 명령어 

데이터베이스를 삭제할 수 있습니다

(test 데이터베이스 생성)

테이블 생성 및 삭제
mysql> use test;
Database changed

mysql> show tables;
Empty set (0.00 sec)

mysql> create table linux (id int, login varchar(10), password varchar(10), username varchar(20), age int);
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+------------------+
| Tables_in_test   |
+------------------+
| linux            | 
+------------------+
1 row in set (0.00 sec)

mysql> create table cisco (id int, login varchar(10), password varchar(10), username varchar(20), age int);
Query OK, 0 rows affected (0.00 sec)

mysql> create table security (id int, login varchar(10), password varchar(10), username varchar(20), age int);
Query OK, 0 rows affected (0.00 sec)

mysql> create table java (id int, login varchar(10), password varchar(10), username varchar(20), age int);
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+------------------+
| Tables_in_test   |
+------------------+
| cisco            | 
| java             | 
| linux            | 
| security         | 
+------------------+
4 rows in set (0.00 sec)

mysql> drop table java;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables; 
+------------------+
| Tables_in_test   |
+------------------+
| cisco            | 
| linux            | 
| security         | 
+------------------+
3 rows in set (0.00 sec)

use ; 명령어를 이용하여 test 데이터베이스를 사용하고

show tables ; 명령어 테이블을 확인합니다.

create table ; 명령어 리눅스 테이블을 생성하고 

cisco, security, java 테이블을 리눅스와 

동일하게 추가로 생성합니다.

(java 테이블은 삭제)

 
칼럼 속성 확인 & 데이터 값 입력
mysql> desc cisco;
+----------+-------------+------+-----+---------+-------+
| Field    |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|    id    |   int(11)   |  YES |     |   NULL  |       |
|   login  | varchar(10) |  YES |     |   NULL  |       |
| password | varchar(10) |  YES |     |   NULL  |       |
| username | varchar(20) |  YES |     |   NULL  |       |
|   age    |   int(11)   |  YES |     |   NULL  |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.021 sec)

mysql> desc linux;
+----------+-------------+------+-----+---------+-------+
|   Fiel d |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|    id    |   int(11)   |  YES |     |   NULL  |       |
|   login  | varchar(10) |  YES |     |   NULL  |       |
| password | varchar(10) |  YES |     |   NULL  |       |
| username | varchar(20) |  YES |     |   NULL  |       |
|    age   |   int(11)   |  YES |     |   NULL  |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.001 sec)

mysql> desc security;
+----------+-------------+------+-----+---------+-------+
|  Field   |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|    id    |   int(11)   |  YES |     |   NULL  |       |
|   login  | varchar(10) |  YES |     |   NULL  |       |
| password | varchar(10) |  YES |     |   NULL  |       |
| username | varchar(20) |  YES |     |   NULL  |       |
|    age   |   int(11)   |  YES |     |   NULL  |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.001 sec)

desc; 명령어를 이용하여 속성을 확인해 보고,

mysql> select * from cisco;
Empty set (0.000 sec)

mysql> insert into cisco values(1, 'cisco1', 'cisco1111', 'test', 23);
Query OK, 1 row affected (0.001 sec)

mysql> insert into cisco values(2, 'cisco2', 'cisco2222', 'test', 26);
Query OK, 1 row affected (0.001 sec)

mysql> insert into cisco (login, id, password, age, username) values('cisco3', 3, 'cisco3333', 29, 'test'); 
Query OK, 1 row affected (0.001 sec)

mysql> select * from cisco;
+------+--------+-----------+----------+------+
| id   | login  | password  | username |  age |
+------+--------+-----------+----------+------+
| 1    | cisco1 | cisco1111 |   test   |  23  |
| 2    | cisco2 | cisco2222 |   test   |  26  |
| 3    | cisco3 | cisco3333 |   test   |  29  |
+------+--------+-----------+----------+------+
3 rows in set (0.000 sec)

mysql> \! clear

mysql> insert into linux values(1, 'linux1', 'linux1111', 'test', 33); Query OK, 1 row affected (0.001 sec)

mysql> insert into linux values(2, 'linux2', 'linux2222', 'test1', 36);
Query OK, 1 row affected (0.001 sec)

mysql> insert into linux values(3, 'linux3', 'linux3333', 'test2', 39);
Query OK, 1 row affected (0.001 sec)

mysql> select * from linux;
+------+--------+-----------+--------------+------+
|  id  |  login |  password |   username   |  age |
+------+--------+-----------+--------------+------+
|   1  | linux1 | linux1111 |     test     |  33  |
|   2  | linux2 | linux2222 |     test1    |  36  |
|   3  | linux3 | linux3333 |     test2    |  39  |
+------+--------+-----------+--------------+------+
3 rows in set (0.000 sec)

mysql> insert into security values(1, 'security1', 'security11', 'test', 43); Query OK, 1 row affected (0.001 sec)

mysql> insert into security values(2, 'security2', 'security22', 'test1', 46);
Query OK, 1 row affected (0.001 sec)

mysql> insert into security values(3, 'security3', 'security33', 'test2', 49);
Query OK, 1 row affected (0.001 sec)

mysql> select * from security;
+------+-----------+------------+---------------+------+
|  id  |   login   |  password  |    username   |  age |
+------+-----------+------------+---------------+------+
|   1  | security1 | security11 |      test     |  43  |
|   2  | security2 | security22 |      test1    |  46  |
|   3  | security3 | security33 |      test2    |  49  | 
+------+-----------+------------+---------------+------+
3 rows in set (0.000 sec)

각 칼럼에 데이터 값을 입력해 봅니다.

select * from ; 명령어로 칼럼을 선택하고

insert into ~ values ; 명령어 

원하는 정보를 입력하여 넣어줍니다.

데이터 값 수정 및 삭제
mysql> select * from cisco;
+------+--------+-----------+--------------+------+
|  id  |  login |  password |   username   |  age |
+------+--------+-----------+--------------+------+
|   1  | cisco1 | cisco1111 |     test     |  23  |
|   2  | cisco2 | cisco2222 |     test     |  26  |
|   3  | cisco3 | cisco3333 |     test     |  29  |
+------+--------+-----------+--------------+------+
3 rows in set (0.000 sec)

mysql> update cisco set username='test1' where login='cisco2';
Query OK, 1 row affected (0.022 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> update cisco set username='test2' where id=3; 
Query OK, 1 row affected (0.003 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from cisco;
+------+--------+-----------+--------------+------+
|  id  |  login |  password |   username   |  age |
+------+--------+-----------+--------------+------+
|   1  | cisco1 | cisco1111 |     NULL     |  23  |
|   2  | cisco2 | cisco2222 |     test1    |  26  |
|   3  | cisco3 | cisco3333 |     test2    |  29  |
+------+--------+-----------+--------------+------+
3 rows in set (0.000 sec)

mysql> update cisco set username=default where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from cisco; 
+------+--------+-----------+--------------+------+
|  id  |  login |  password |   username   |  age |
+------+--------+-----------+--------------+------+
|   1  | cisco1 | cisco1111 |     test     |  23  | 
|   2  | cisco2 | cisco2222 |     test1    |  26  | 
|   3  | cisco3 | cisco3333 |     test2    |  29  | 
+------+--------+-----------+--------------+------+
3 rows in set (0.00 sec)

mysql> update cisco set username=default;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 3 Changed: 2 Warnings: 0

mysql> select * from cisco;
+------+--------+-----------+----------+------+
|  id  |  login |  password | username |  age |
+------+--------+-----------+----------+------+
|   1  | cisco1 | cisco1111 |   NULL   |  23  | 
|   2  | cisco2 | cisco2222 |   NULL   |  26  | 
|   3  | cisco3 | cisco3333 |   NULL   |  29  | 
+------+--------+-----------+----------+------+
3 rows in set (0.00 sec)

mysql> delete from cisco where id=3;
Query OK, 1 row affected (0.00 sec)

mysql> select * from cisco;
+------+--------+-----------+----------+------+
|  id  |  login |  password | username |  age |
+------+--------+-----------+----------+------+
|   1  | cisco1 | cisco1111 |   NULL   |  23  | 
|   2  | cisco2 | cisco2222 |   NULL   |  26  | 
+------+--------+-----------+----------+------+
2 rows in set (0.00 sec)

mysql> delete from cisco;
Query OK, 2 rows affected (0.00 sec)

mysql> select * from cisco;
Empty set (0.00 sec)

mysql> desc cisco;
+----------+-------------+------+-----+---------+-------+
|   Field  |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|    id    |   int(11)   |  YES |     |   NULL  |       | 
|   login  | varchar(10) |  YES |     |   NULL  |       | 
| password | varchar(10) |  YES |     |   NULL  |       | 
| username | varchar(20) |  YES |     |   NULL  |       | 
|    age   |   int(11)   |  YES |     |   NULL  |       | 
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

select * from ; 명령어로 컬럼을 선택하고

update ~ set username= ~ where login='~';

으로 username 값을 변경해 본다

update ~ set username=default where id=~; 과 update ~ set username=default 명령어로

username을 NULL로 변경해 본다

delete from ~ where id=~ 명령어

삭제를 시도해 본다

desc ~; 명령어 지금까지 작업한 내용을 확인해 본다.


다음 실습을 위해 Cisco 테이블에 데이터 값 재 입력
mysql> insert into cisco values(1, 'cisco1', 'cisco1111', 'test', 23);
Query OK, 1 row affected (0.001 sec)

mysql> insert into cisco values(2, 'cisco2', 'cisco2222', 'test1', 26);
Query OK, 1 row affected (0.001 sec)

mysql> insert into cisco values(3, 'cisco3', 'cisco3333', 'test2', 29); 
Query OK, 1 row affected (0.001 sec)

mysql> select * from cisco;
+------+--------+-----------+----------+------+
| id   | login  | password  | username |  age |
+------+--------+-----------+----------+------+
| 1    | cisco1 | cisco1111 |   test   |  23  |
| 2    | cisco2 | cisco2222 |   test1  |  26  |
| 3    | cisco3 | cisco3333 |   test2  |  29  |
+------+--------+-----------+----------+------+
3 rows in set (0.000 sec)

칼럼 속성 정보 변경
mysql> desc linux;
+----------+-------------+------+-----+---------+-------+
|   Field  |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|    id    |   int(11)   |  YES |     |   NULL  |       | 
|   login  | varchar(10) |  YES |     |   NULL  |       | 
| password | varchar(10) |  YES |     |   NULL  |       | 
| username | varchar(20) |  YES |     |   NULL  |       | 
|    age   |   int(11)   |  YES |     |   NULL  |       | 
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

mysql> alter table linux modify login varchar(20);
Query OK, 0 rows affected (0.002 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> alter table linux modify password varchar(40);
Query OK, 0 rows affected (0.001 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc linux;
+----------+-------------+------+-----+---------+-------+
|   Field  |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|    id    |   int(11)   |  YES |     |   NULL  |       |
|   login  | varchar(20) |  YES |     |   NULL  |       |
| password | varchar(40) |  YES |     |   NULL  |       |
| username | varchar(20) |  YES |     |   NULL  |       |
|    age   |   int(11)   |  YES |     |   NULL  |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

alter table ~ modify login ~; 명령어를 이용하여

로그인 속성을 변경해 봅니다.

alter table ~ modify password ~ 명령어

이용하여 패스워드 속성을 변경해 봅니다.

칼럼 추가 & 수정 & 삭제
mysql> alter table linux add email varchar(20) first;
Query OK, 0 rows affected (0.006 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc linux;
+----------+-------------+------+-----+---------+-------+
|   Field  |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|   email  | varchar(20) |  YES |     |   NULL  |       |
|    id    |   int(11)   |  YES |     |   NULL  |       |
|   login  | varchar(20) |  YES |     |   NULL  |       |
| password | varchar(40) |  YES |     |   NULL  |       |
| username | varchar(20) |  YES |     |   NULL  |       |
|    age   |   int(11)   |  YES |     |   NULL  |       |
+----------+-------------+------+-----+---------+-------+
6 rows in set (0.001 sec)

mysql> select * from linux;
+-------+------+--------+-----------+--------------+------+
| email |  id  |  login |  password |   username   |  age |
+-------+------+--------+-----------+--------------+------+
|  NULL |   1  | linux1 | linux1111 |     test     |  33  |
|  NULL |   2  | linux2 | linux2222 |     test1    |  36  |
|  NULL |   3  | linux3 | linux3333 |     test2    |  39  |
+-------+------+--------+-----------+--------------+------+
3 rows in set (0.000 sec)

mysql> alter table linux modify email varchar(20) after username; Query OK, 0 rows affected (0.009 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc linux; 
+----------+-------------+------+-----+---------+-------+
|   Field  |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|    id    |   int(11)   |  YES |     |   NULL  |       |
|   login  | varchar(20) |  YES |     |   NULL  |       |
| password | varchar(40) |  YES |     |   NULL  |       |
| username | varchar(20) |  YES |     |   NULL  |       |
|   email  | varchar(20) |  YES |     |   NULL  |       |
|    age   |   int(11)   |  YES |     |   NULL  |       |
+----------+-------------+------+-----+---------+-------+
6 rows in set (0.001 sec)

mysql> select * from linux; 
+------+--------+-----------+--------------+-------+------+
|  id  |  login |  password |   username   | email |  age |
+------+--------+-----------+--------------+-------+------+
|   1  | linux1 | linux1111 |     test     |  NULL |  33  |
|   2  | linux2 | linux2222 |     test1    |  NULL |  36  |
|   3  | linux3 | linux3333 |     test2    |  NULL |  39  |
+------+--------+-----------+--------------+-------+------+
3 rows in set (0.000 sec)

mysql> update linux set email='linux1@test.com' where login='linux1';
Query OK, 1 row affected (0.001 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> update linux set email='linux2@test.com' where login='linux2';
Query OK, 1 row affected (0.001 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> update linux set email='linux3@test.com' where login='linux3';
Query OK, 1 row affected (0.001 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from linux;
+------+--------+-----------+--------------+-------------------+------+
|  id  |  login |  password |   username   |       email       |  age |
+------+--------+-----------+--------------+-------------------+------+
|   1  | linux1 | linux1111 |     test     |  linux1@test.com  |  33  |
|   2  | linux2 | linux2222 |     test1    |  linux2@test.com  |  36  |
|   3  | linux3 | linux3333 |     test2    |  linux3@test.com  |  39  |
+------+--------+-----------+--------------+-------------------+------+
3 rows in set (0.000 sec)

mysql> alter table linux drop email;
Query OK, 0 rows affected (0.009 sec)
Records: 0 Duplicates: 0 Warnings: 0

alter table ~ add ~ varchar(20) first; 명령어

테이블 맨 앞부분에 칼럼 추가

잘 추가됐는지 desc ; 로 확인한 후

alter table ~ modify ~ after ~; 명령어로

리눅스 테이블에 이메일 칼럼 위치 수정

update ~ set ~='~' where login='~'; 명령어

이용하여 상세 데이터 수정


각 명령어 사용 직후

  • 데이터베이스 생성 및 삭제: CREATE DATABASE test;와 DROP DATABASE test; 명령어 직후에 각 명령어가 데이터베이스를 생성하고 삭제하는 기능을 수행한다는 설명을 추가합니다.
    • 예: "CREATE DATABASE test; 명령어는 'test'라는 이름의 새로운 데이터베이스를 생성합니다. 이때, 데이터베이스 이름은 고유해야 합니다. DROP DATABASE test; 명령어는 'test' 데이터베이스를 시스템에서 완전히 제거합니다."
  • 테이블 생성, 데이터 입력, 수정 및 삭제: 각 CREATE TABLE, INSERT INTO, UPDATE, DELETE 명령어 사용 직후에 명령어의 기능을 간략하게 설명합니다.
    • 예: "CREATE TABLE 명령어는 새로운 테이블을 생성합니다. INSERT INTO 명령어는 테이블에 새로운 행을 추가합니다. UPDATE 명령어는 테이블의 데이터를 수정하고, DELETE 명령어는 데이터를 삭제합니다."
 

오늘은 Mysql을 알아본 후
어떤 식으로 mysql을 사용하는 건지
간단한 실습을 통해서
Mysql에 접속해 보고,
Database를 생성하고 삭제해 보고,
테이블을 생성하고 삭제해 보고,
테이블 안에 컬럼 속성을 확인해 보고,
값을 입력하고 수정해 보고 삭제해 보고,
속성 정보를 변경해 보고,
칼럼을 추가하고 수정하고 삭제까지 해봤습니다.

아직까지 정말 많이 쓰이고 있는 mysql은 

어느 곳에 속하여 일을 하시던지

알고 계시면 분명 도움이 될만한 내용이라고 생각합니다.


  • 보안 관련 주의사항 및 안전한 사용법: mysql -u root -p 명령어를 사용하여 접속하는 방법을 설명하는 부분에 보안 주의사항을 추가합니다.
    • 예: "MySQL을 사용할 때는 보안을 항상 유념해야 합니다. 예제에서 사용한 'root' 계정과 'bug'라는 비밀번호는 테스트 목적으로만 사용해야 합니다. 실제 환경에서는 강력한 비밀번호를 설정하고, 필요한 최소한의 권한을 가진 사용자 계정을 생성하여 사용하는 것이 좋습니다."

실습 후 데이터베이스와 테이블 정리: MySQL 실습을 마친 후, 생성한 데이터베이스와 테이블을 어떻게 정리해야 하는지에 대한 방법을 설명합니다.

  • 예: "실습을 마친 후에는 사용한 데이터베이스와 테이블을 정리하는 것이 좋습니다. 이를 위해 DROP DATABASE 명령어와 DROP TABLE 명령어를 사용하여 더 이상 필요하지 않은 데이터베이스와 테이블을 삭제할 수 있습니다. 이 과정은 실습 환경을 깔끔하게 유지하고, 불필요한 데이터의 축적을 방지합니다

궁금하신 사항은 댓글에 남겨주세요
댓글에 남겨주신 내용
추후 정리해서 올려드리겠습니다
구독 신청하시면 업로드 시 알려드릴게요!
-
조금이라도 도움이 되셨다면
공감&댓글 부탁드리겠습니다
감사합니다!

 

반응형

+ Recent posts