반응형

이번 강의에서는 C언어의 핵심 구조 중 하나인 조건문과 반복문에 대해 배워보겠습니다.

이미 우리는 이전 글에서 변수, 자료형, 연산자에 대해 배웠으며,

이러한 지식을 바탕으로 프로그램의 흐름을 제어하는 방법을 학습할 것입니다.


C 프로그래밍 언어 독학 시리즈 전편을 아직 안 보신 분은 아래 링크를 참고해 주세요!

C 언어 독학 #1 (기초, 쉬운 설명, Hello world)

C 언어 독학 시리즈 #2 (변수, 자료형, 연산자, 기본 입출력, 실습예제)


"C언어를 배우는 것은 마치 산을 오르는 것과 같다.

정상에 오를 때까지는 힘들고 도전적이지만, 정상에 서면 전에 보지 못했던 경치와 가능성을 볼 수 있다."

조건문

조건문은 주어진 조건에 따라 다른 코드를 실행하게 하는 구조입니다.

C언어에서는 주로 if, else, else if, switch 문을 사용합니다.

if문
if 문은 마치 도로의 분기점과 같습니다.
어떤 조건을 만족하면 한 길로 가고, 그렇지 않으면 다른 길로 갑니다.
조건의 복잡성에 따라 여러 개의 분기로 나뉠 수 있습니다.
#include <stdio.h>

int main() {
    int score = 85;
    if (score >= 90) {
        printf("A학점입니다.\n");
    } else if (score >= 80) {
        printf("B학점입니다.\n");
    } else {
        printf("C학점 이하입니다.\n");
    }
    return 0;
}

위 내용을 응용하여 나이에 따른 입장료 계산을 해보도록 하겠습니다.

#include <stdio.h>

int main() {
    int age;
    printf("나이를 입력하세요: ");
    scanf("%d", &age);

    if (age < 13) {
        printf("어린이 입장료는 2000원입니다.\n");
    } else if (age <= 19) {
        printf("청소년 입장료는 3000원입니다.\n");
    } else {
        printf("성인 입장료는 5000원입니다.\n");
    }
    return 0;
}
switch 문
switch 문은 마치 기차역의 스위치처럼 특정 변수의 값에 따라 다른 트랙으로 기차를 보내는 역할을 합니다.
각 케이스는 특정한 역에 해당하며, 해당 역에 정차할 때만 실행됩니다.
#include <stdio.h>

int main() {
    char grade = 'B';
    switch (grade) {
        case 'A':
            printf("우수한 성적입니다.\n");
            break;
        case 'B':
            printf("좋은 성적입니다.\n");
            break;
        default:
            printf("노력이 필요합니다.\n");
            break;
    }
    return 0;
}

위 내용을 응용하여 요일에 따른 스케줄 출력을 해보도록 하겠습니다.

#include <stdio.h>

int main() {
    int day;
    printf("요일을 입력하세요 (1=월요일, ..., 7=일요일): ");
    scanf("%d", &day);

    switch(day) {
        case 1:
            printf("월요일: 팀 회의가 있습니다.\n");
            break;
        case 2:
            printf("화요일: 프로젝트 작업의 날입니다.\n");
            break;
        case 3:
            printf("수요일: 영어 학습 시간입니다.\n");
            break;
        case 4:
            printf("목요일: 체육활동이 있습니다.\n");
            break;
        case 5:
            printf("금요일: 자유 연구 시간입니다.\n");
            break;
        case 6:
            printf("토요일: 휴식일입니다.\n");
            break;
        case 7:
            printf("일요일: 가족과 시간을 보냅니다.\n");
            break;
        default:
            printf("잘못된 입력입니다.\n");
            break;
    }
    return 0;
}

반복문

반복문은 특정 조건이 만족하는 동안 코드 블럭을 반복 실행합니다.

C언어에서는 for, while, do-while 문을 사용합니다.

for 문
for 문은 마치 달력의 날짜를 하나씩 넘기는 것과 같습니다.
시작점, 종료점, 그리고 얼마나 빠르게 넘길지(증가량)를 정해놓고 반복합니다.
#include <stdio.h>

int main() {
    for (int i = 1; i <= 5; i++) {
        printf("%d ", i);
    }
    printf("\n");
    return 0;
}

위 내용을 응용하여 1부터 10까지의 합 계산을 해보도록 하겠습니다.

#include <stdio.h>

int main() {
    int sum = 0;
    for (int i = 1; i <= 10; i++) {
        sum += i;
    }
    printf("1부터 10까지의 합은 %d입니다.\n", sum);
    return 0;
}
while 문
while 문은 마치 조건을 충족하는 동안 무한 루프 도로를 도는 자동차와 같습니다.
주어진 조건이 참인 동안 계속해서 루프를 돕니다.
#include <stdio.h>

int main() {
    int i = 1;
    while (i <= 5) {
        printf("%d ", i);
        i++;
    }
    printf("\n");
    return 0;
}

위 내용을 응용하여 사용자로부터 0이 입력될 때까지 숫자 입력 받기를 해보도록 하겠습니다.

#include <stdio.h>

int main() {
    int number;
    printf("숫자를 입력하세요 (0으로 종료): ");
    scanf("%d", &number);

    while (number != 0) {
        printf("입력한 숫자: %d\n", number);
        printf("다시 숫자를 입력하세요 (0으로 종료): ");
        scanf("%d", &number);
    }
    printf("프로그램을 종료합니다.\n");
    return 0;
}

이제 위 내용을 모두 포함한 실습 예제를 하나 만들어보겠습니다.

조건문과 반복문을 모두 활용하여 하나의 통합된 프로그램을 구성할 것이며, 아래 기능을 포함할 것입니다

  1. 사용자로부터 날짜(요일)와 나이를 입력받습니다.
  2. 요일에 따른 스케줄을 출력합니다 (switch 문 사용).
  3. 나이에 따른 입장료를 계산합니다 (if 문 사용).
  4. 1부터 입력받은 날짜까지의 합을 계산합니다 (for 문 사용).
  5. 사용자로부터 0이 입력될 때까지 추가 숫자를 입력받아 출력합니다 (while 문 사용)

 

C코드 구현
#include <stdio.h>

int main() {
    int day, age, number, sum = 0;

    // 요일 입력받기
    printf("요일을 입력하세요 (1=월요일, ..., 7=일요일): ");
    scanf("%d", &day);

    // 스케줄 출력 (switch 문)
    switch(day) {
        case 1: printf("월요일: 팀 회의가 있습니다.\n"); break;
        case 2: printf("화요일: 프로젝트 작업의 날입니다.\n"); break;
        case 3: printf("수요일: 영어 학습 시간입니다.\n"); break;
        case 4: printf("목요일: 체육활동이 있습니다.\n"); break;
        case 5: printf("금요일: 자유 연구 시간입니다.\n"); break;
        case 6: printf("토요일: 휴식일입니다.\n"); break;
        case 7: printf("일요일: 가족과 시간을 보냅니다.\n"); break;
        default: printf("잘못된 입력입니다. 프로그램을 종료합니다.\n"); return 1;
    }

    // 나이 입력받기
    printf("나이를 입력하세요: ");
    scanf("%d", &age);

    // 입장료 계산 (if 문)
    if (age < 13) {
        printf("어린이 입장료는 2000원입니다.\n");
    } else if (age <= 19) {
        printf("청소년 입장료는 3000원입니다.\n");
    } else {
        printf("성인 입장료는 5000원입니다.\n");
    }

    // 1부터 day까지의 합 계산 (for 문)
    for (int i = 1; i <= day; i++) {
        sum += i;
    }
    printf("1부터 %d까지의 합은 %d입니다.\n", day, sum);

    // 0이 입력될 때까지 숫자 입력받기 (while 문)
    printf("숫자를 입력하세요 (0으로 종료): ");
    scanf("%d", &number);
    while (number != 0) {
        printf("입력한 숫자: %d\n", number);
        printf("다시 숫자를 입력하세요 (0으로 종료): ");
        scanf("%d", &number);
    }
    printf("프로그램을 종료합니다.\n");
    return 0;
}

우리는 위 예제를 통해 아래와 같은 c언어 구현 스킬을 배워봤습니다.

1. 요일에 따른 스케줄 출력 (switch 문 활용)

  • 조건 분기 처리: switch 문을 통해 특정 변수의 값(요일)에 따라 다른 동작을 수행하도록 프로그램을 제어합니다. 이를 통해 여러 조건에 대해 각각의 로직을 구현하는 방법을 연습할 수 있습니다.
  • 값에 따른 특정 케이스 처리: 각 요일마다 다른 메시지를 출력하며, switch 문의 case 레이블을 사용하는 방법을 실습합니다.
  • 디폴트 케이스 처리: default 레이블을 사용하여 입력 값이 유효 범위를 벗어났을 때의 예외 처리를 구현합니다.

2. 나이에 따른 입장료 계산 (if 문 활용)

  • 조건 로직 구현: 다중 if-else if-else 구조를 사용하여 복잡한 조건 로직을 구현합니다. 이는 프로그램에서 다양한 조건에 따라 다른 행동을 취해야 할 때 매우 유용합니다.
  • 조건 표현식: 다양한 비교 연산자(<, <=, else)를 사용하여 특정 조건을 평가하고 그에 따라 다른 동작을 수행합니다.

3. 1부터 day까지의 합 계산 (for 문 활용)

  • 반복문 사용: for 문을 사용하여 특정 범위의 값에 대해 반복 작업을 수행합니다. 이는 데이터의 집합이나 범위에 대해 일련의 연산을 반복적으로 적용할 때 필수적입니다.
  • 변수 증가와 누적 계산: 반복문 내에서 변수를 하나씩 증가시키면서, 누적 합계를 계산하는 방법을 연습합니다.

4. 0이 입력될 때까지 숫자 입력받기 (while 문 활용)

  • 조건 반복 처리: while 문을 사용하여 사용자로부터 계속해서 입력을 받고, 특정 조건(number != 0)이 만족될 때까지 반복합니다.
  • 사용자 입력 처리와 조건 평가: 사용자로부터 입력받은 값을 즉시 처리하고, 프로그램의 흐름을 사용자 입력에 따라 조절하는 방법을 연습합니다.

오늘 배운 조건문과 반복문을 통해 프로그램의 흐름을 자유자재로 제어할 수 있는 기초를 마련했습니다.

다음 강의에서는 배열과 포인터에 대해 자세히 다룰 예정이니,

이번 강의 내용을 복습하고 연습문제를 풀어보면서 확실하게 이해하시면 좋을 것 같습니다.

Happy coding!

 

https://jdcyber.tistory.com/79

 

C 언어 독학 시리즈 #4: 함수(Function)의 이해와 활용

이번 강의에서는 C 언어의 핵심 요소 중 하나인 함수에 대해 배워보겠습니다.이미 우리는 이전 글에서 변수, 자료형, 연산자, 조건문과 반복문에 대해 학습했으며,이러한 지식을 바탕으로 더 체

jdcyber.tistory.com


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

댓글에 남겨주신 내용

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

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

-

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

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

감사합니다!

반응형
반응형

전 회차 파이썬 독학 글을 못 보신 분들은

아래 링크를 살펴보고 와주세요!


파이썬 독학 #1과 #2 글에서는 파이썬의 기초 설치부터

IDLE, IDE의 개념, VSCode 설치 및 기본 세팅까지 다루었습니다.

#3에서는 자료형의 기초, 사칙 연산, 인덱싱, 슬라이싱, 포맷팅, 변수 등을 소개하며

프로그래밍의 기본적인 개념을 다루었습니다.

자료형을 알고 있다면
그 언어의 절반을 터득한 것

파이썬 독학 세 번째 시간입니다.

프로그래밍 언어를 배우시다 보면

우리가 자연스럽게 이해하고 있던

숫자의 개념과 문자의 개념이 혼동이 오기 시작합니다.

'1'+'1'이 뭔지 알아?
"2"

"아니? 11이야."

이게 말이 되기 시작하거든요

작은따옴표를 써서 '1'+'1'을 문자로 만들어버리면

위의 답은 11이 되게 됩니다.

따옴표로 글자와 숫자를 나눌 수 있는데요

이것이 프로그래밍 형식이며

우리는 이걸 자료형이라고 부릅니다.

(지금은 아 이런 게 있구나~ 정도로

아래 내용을 후루룩 읽고 넘어가 주세요)


자료형

자료형은 타입과 구조로 나눌 수 있고 각각의 개념을 또 잘게 나눌 수 있습니다

Type
숫자
정수
실수
컴퓨터 지수
진수(2,8,10,16 ..)
문자열
인덱싱
슬라이싱
포메팅
 
불 (참&거짓)
       
구조
변수
       
리스트
       
튜플
       
딕셔너리
       
집합
       

숫자

a = 1
print(a)
1

 

파이썬에서 숫자를 쓸 때는

a =1이라고 지정해 놓고 a를 출력하면

1이라고 나오게 됩니다

이걸 이제 정수, 실수, 컴퓨터 지수, 2진수 8진수, 10진수, 16진수 등으로 나눌 수 있는데요

천천히 살펴보도록 하겠습니다.

(위에서 말씀드렸지만 한 번 더 말씀드리면

지금은 아 이런 게 있구나~ 정도로 넘어가셔도 됩니다)


정수형 (int)

(1,2, -1)

1과 2 -1 등 소수점 없는 수 정수

a = 1 <- 자료형이 무엇인지 궁금할때는
print(type(a)) <- type
class int <- int = 정수형

실수 (float)

(1.23, -13.42)

소수점이 있는 실수

a = 1.23 <- 자료형이 무엇인지 궁금할때는
print(type(a)) <- type
class float <- float = 실수

컴퓨터 지수 표현 방식

(4.24e10)

가끔 계산기에 너무 많은 값이 입력되면 출력되는 모습 컴퓨터 지수

a = 4.24e10 <- 4.24 x 10의 10승
print(type(a)) <- type
class float <- float = 실수
print(a) <- 값
42400000000.0 <-
 

8진수와 16진수 2진수 10진수 등은

따로 여기서 다시 설명은 하지 않겠습니다.

대신 아래 글을 읽으시면 개념 잡기 쉬우실 거예요!

https://jdcyber.tistory.com/29

 

2진수와 10진수 (2진법 10진법) (쉬운 설명, 개념, 제곱, 승)

일상생활을 할 때는 필요 없지만 컴퓨터를 배우거나 네트워크 리눅스 파이썬 개발 등을 하시게 되면 컴퓨터가 사용하는 2진수를 배워야 하는데요 우리가 사용하는 iP 주소는 192.168.123.132 이러한

jdcyber.tistory.com

 
 

사칙 연산

파이썬으로 사칙연산도 가능합니다

아래 쭉 나열해서 보여드릴게요


더하기(+)

>>> a = 3
>>> b = 4
print(a+b)
7

곱하기 (*)

>>> a = 3
>>> b = 4
print(a*b)
12

나누기 (/)

>>> a = 3
>>> b = 4
print(a/b)
0.75

몫 (//)

>>> a = 3
>>> b = 4
print(a//b)
0

나머지 (%)

>>> a = 3
>>> b = 4
print(a%b)
3

제곱 (**)

>>> a = 3
>>> b = 4
print(a**b)
81

문자열 (String)

문자열을 자료형(str)으로 만드는 4가지 방법을 알아보겠습니다

>>> "Hello JD" <- "끈 따옴표"
>>> 'How are you JD' <- '작은 따옴표'
>>> """Let's start''' <- """큰 따옴표 3개"""
>>> '''2023 it's comming''' <- '''작은 따옴표 3개'''
Type str

왜 이렇게 쓸데없어 보이게 많이 만들었을까요?

이유가 있습니다.

'That's my pen'

이런 문장을 쓸 때 가운데 (') 하나가 더 들어갔죠?

이걸 파이썬에서는 'That'이라는 문자열 자료형으로 인식합니다.

뒤에는 알아듣지 못하고 프로그래밍 구문의 오류인

Syntax error로 출력하게 됩니다.

이럴 땐 큰따옴표를 사용하면 됩니다

"That's my pen"

혹은 'That\'s my pen'으로 가운데 (\) 역슬래쉬를 넣어

문자열 따옴표라고 파이썬에서 인식하고 사용할 수 있습니다.


줄 바꾸기

이걸 이용해서 줄 바꿈을 할 수 있습니다

원래 파이썬은 줄 단위로 인식하기 때문에

줄 바꿈을 따옴표 없이 하게 되면 오류를 출력하게 되는데

이때는 아래 예시처럼 할 수 있습니다

>>> hi/nthere
hi
there

문자열 + 사칙연산

아래 몇 가지 예시만 보여드리고 빠르게 넘어가도록 하겠습니다

>>> a = "hi"
>>> b = "there"
print(a + b)
hi there

print(a*10)
hihihihihihihihihihi

인덱싱

저장된 문자열의 각 문자마다 번호를 매겨 표현할 수 있습니다.

>>> a = "Life is too short, you need python"
print(a[0])
L
print(a[1])
i
print(a[2])
f
print(a[-1])
n
print(a[-2])
o

"Life is too short, you need python"

맨 앞 L 알파벳부터 0부터 순차적으로 올라가서

0 = L, 1=i 2=f 가 되는 것이죠

그리고 -를 쓰면 반대로 내림차순이 되어

-1 = n, -2 = o 가 됩니다.


슬라이싱

>>> a = "Life is too short, you need python"
print(a[0:4]) <- 처음부터 4번째까지
Life
print(a[0:8]) <- 처음부터 8번째까지
Life is
print(a[8:]) <- 8번째부터 끝까지
too short, you need python
print(a[::2]) <- 처음부터 끝까지 간격만 2
Lf stosot o edpto

"Life is too short, you need python"

a[x:x:x]

첫 번째 x는 이상 두 번째 x는 미만 마지막 x는 간격인데

기본 default 값으로 1이 들어가 있고 생략 가능합니다

위의 설명과 소스 예제를 보면서 이해해 주시면 좋을 것 같습니다

포메팅

b = "I eat " + str(3) + " apples" <- 이렇게 쓰기 귀찮으니까
a = "I eat % apples." %3 <- 이렇게 쓰자

포메팅을 사용하면 "따옴표를 적게 쓸 수 있고 조금 더 쉽고 편하게 사용할 수 있습니다.

number = 10 <- number라는 문자열에 10이라는 유동적인 규칙 부여
day = "three" <- day라는 문자열에 three이라는 유동적인 규칙 부여
a = "I ate %d apples. so I was sick for %s days" % (number, day) <- 규칙을 원하든 대로 바꿔서 문장 완성
print(b)]
I ate 10 apples. so I was sick for three days

number와 day를 각각 10과 three에 매핑시켜서 문장을 만들면

새로 다 문장을 쓸 필요 없이 사용할 수 있습니다

여기서 % s는 문자열을 쓸 때 쓰는 것이며

% d는 정수 등 규칙이 있지만

거의 대부분 % s를 쓰면 문자열로 바꿔서 들어가기 때문에

지금은 % s만 알고 넘어가셔도 좋습니다

변수

a = 3
a = a + 1
print(a)
4

변수는 어떠한 값을 이거라고 지정해 놓는 겁니다

a가 3이라고 할 때, a = a+1

위와 같은 변수를 저장해 놓는다면

4(3+1)라는 값을 a에 넣는다라고 생각해 주시면 됩니다


예제 연습

숫자와 사칙연산 실습

# 숫자와 사칙연산 실습
a = 5
b = 2

# 더하기
print("더하기: ", a + b)

# 빼기
print("빼기: ", a - b)

# 곱하기
print("곱하기: ", a * b)

# 나누기
print("나누기: ", a / b)

# 몫
print("몫: ", a // b)

# 나머지
print("나머지: ", a % b)

# 제곱
print("제곱: ", a ** b)

문자열 인덱싱과 슬라이싱 실습

# 문자열 인덱싱과 슬라이싱 실습
s = "Python Programming is fun!"

# 인덱싱
print("s의 0번째 문자: ", s[0])  # P
print("s의 마지막 문자: ", s[-1])  # !

# 슬라이싱
print("s의 처음부터 6번째까지: ", s[:6])  # Python
print("s의 7번째부터 끝까지: ", s[7:])  # Programming is fun!

리스트 실습

# 리스트 실습
my_list = [1, 2, 3, 4, 5]

# 리스트에 요소 추가
my_list.append(6)
print("요소 추가 후: ", my_list)

# 리스트에서 요소 제거
my_list.remove(2)
print("요소 제거 후: ", my_list)

# 리스트 슬라이싱
print("리스트의 1부터 3까지의 요소: ", my_list[1:4])

딕셔너리 실습

# 딕셔너리 실습
my_dict = {'name': 'John', 'age': 30, 'job': 'Developer'}

# 딕셔너리에 요소 추가
my_dict['city'] = 'New York'
print("요소 추가 후: ", my_dict)

# 딕셔너리에서 요소 제거
del my_dict['age']
print("요소 제거 후: ", my_dict)

# 딕셔너리의 키로 값 접근
print("name 키로 접근: ", my_dict['name'])

조건문 실습 (추가 예제)

# 조건문 실습
age = 18

if age < 13:
    print("어린이")
elif age < 20:
    print("청소년")
else:
    print("성인")

너무 내용이 길어지는 관계로

파이썬 독학 #3은 여기서 마치고

파이썬 독학 #4에서 나머지 부분을

마무리하도록 하겠습니다.

 

파이썬 독학 #4에서 만나요!

https://jdcyber.tistory.com/60

 

파이썬 독학 #4 기초 개념을 활용한 간단한 프로그램 작성하기 (응용)

지금까지 우리는 파이썬의 기본적인 설치 방법, 개발 환경 설정, 기본 명령어와 자료형, 그리고 기본적인 연산과 변수 사용법에 대해 배웠습니다. 못 보신 분들은 아래 글을 순차적으로 읽고 오

jdcyber.tistory.com



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

댓글에 남겨주신 내용

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

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

-

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

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

감사합니다!

 
반응형
반응형

ACL 접근 제어 목록

(Access Control List)

허가되지 않은 이용자가 라우터나 네트워크의

특정 자원에 접근하려고 하는 것을 차단하는 기능입니다.

첫 번째 두 번째 실습에 이어 세 번째 시간입니다.

 

이 실습에서는 ACL (Access Control List)을 사용하여 특정 네트워크 트래픽을 필터링하는 방법을 다룹니다.

목표는 불필요하거나 위험한 접근을 제한하여 네트워크 보안을 강화함에 있습니다.

ACL에 대한 자세한 개념은

아래 글을 참고해 주세요!

https://jdcyber.tistory.com/17

 

ACL (Access Control List) 이란? ACL 구성 가이드: 네트워크 보안 강화를 위한 필수 지침 (쉬운 설명, 예

ACL (Access Control List) 정의 및 개념 ACL (Access Control List) 은 네트워크 보안의 핵심 구성 요소로, 네트워크 장비에서 데이터 패킷의 흐름을 제어하는 데 사용되는 일련의 지침입니다. 이 규칙들은 특

jdcyber.tistory.com

 

 

(패킷 트레이서 예제 파일은 본 글에 첨부해 놨습니다.)

1번 조건

R1, R2, R3
각각의 내부 네트워크에서는 www.ilbe.com, www.toto24.com으로 접근되지 않도록 차단하여라.
 

2번 조건

R1
13.13.20.0/24, 13.13.30.0/24 네트워크만 '13.13.10.100' 웹, FTP 접근이 가능하도록 하여라.
'13.13.10.100'으로 접근하는 모든 ICMP는 차단하여라.
단, '13.13.10.100'은 '13.13.20.0/24', '13.13.30.0/24'로 Ping이 되어야 한다.
 

명령어

conf t
(각각의 내부 네트워크에서는 www.ilbe.com, www.toto24.com으로 접근되지 않도록 차단)
access-list 110 deny ip 13.13.10.0 0.0.255.255 host 141.101.121.208
access-list 110 deny ip 13.13.10.0 0.0.255.255 host 81.150.200.78
access-list 110 permit ip any any
!
int fa0/0
ip access -group 110 int
!
(13.13.20.0/24, 13.13.30.0/24 네트워크만 '13.13.10.100' 웹, FTP 접근이 가능도록 설정)
('13.13.10.100'으로 접근하는 모든 ICMP는 차단 단, '13.13.10.100'은 '13.13.20.0/24', '13.13.30.0/24'로 Ping 가능하도록 설정)
access-list 120 permit tcp 13.13.20.0 0.0.0.255 host 13.13.10.100 eq 80
access-list 120 permit tcp 13.13.20.0 0.0.0.255 host 13.13.10.100 eq 443
access-list 120 permit tcp 13.13.20.0 0.0.0.255 host 13.13.10.100 range 20 21
access-list 120 permit tcp 13.13.30.0 0.0.0.255 host 13.13.10.100 eq 80
access-list 120 permit tcp 13.13.30.0 0.0.0.255 host 13.13.10.100 eq 443
access-list 120 permit tcp 13.13.30.0 0.0.0.255 host 13.13.10.100 range 20 21
access-list 120 deny tcp any host 13.13.10.100 eq80
access-list 120 deny tcp any host 13.13.10.100 eq443
access-list 120 deny tcp any host 13.13.10.100 range 20 21
access-list 120 permit icmp 13.13.20.0 0.0.0.255 host 13.13.10.100 echo-reply
access-list 120 permit icmp 13.13.30.0 0.0.0.255 host 13.13.10.100 echo-reply
access-list 120 deny icmp any host 13.13.10.100
access-list 120 permit ip any any
!
int s0/0/0
ip access-group 120 in
 

확인

show ip access-lists

신중한 IP 주소 및 서비스 선정
  • 정밀한 대상 지정: ACL을 설정할 때, 차단하거나 허용해야 하는 특정 IP 주소, 네트워크, 또는 서비스(웹, FTP, ICMP 등)를 명확히 식별해야 합니다. 이는 불필요한 접근을 정확히 차단하고, 필요한 트래픽은 원활하게 통과시키는 데 중요합니다.
최소 권한 원칙 적용
  • 필요한 최소한의 접근만 허용: 네트워크 보안에서는 항상 최소 권한 원칙(Principle of Least Privilege)을 적용해야 합니다. 이는 사용자나 시스템이 자신의 업무를 수행하는 데 필요한 최소한의 권한만을 가지도록 하는 것입니다. ACL 설정 시, 이 원칙에 따라 필수적인 접근만 허용하고 나머지는 기본적으로 차단하는 방식을 채택해야 합니다.
서비스별 포트 번호 인식
  • 적절한 포트 사용: 웹(HTTP, HTTPS)이나 FTP 서비스에 대한 접근을 허용하거나 차단할 때, 각 서비스의 표준 포트 번호(예: HTTP는 80, HTTPS는 443, FTP는 20과 21)를 정확히 지정해야 합니다. 잘못된 포트 번호 설정은 의도하지 않은 서비스 접근을 허용하거나 차단할 수 있습니다.
정책 구현 후 검증
  • 설정 후 검증: ACL을 구성한 후에는 show ip access-lists 명령어를 사용하여 설정된 규칙을 검토하고, 실제 네트워크 트래픽이 의도한 대로 필터링되는지 확인해야 합니다. 또한, 허용된 접근과 차단된 접근 모두를 테스트하여 ACL이 정상적으로 작동하는지 검증해야 합니다.
문서화 및 지속적 관리
  • 구성 문서화: ACL 설정을 문서화하여 관리하면 나중에 네트워크 변경이나 문제 해결 시 큰 도움이 됩니다. 구성 변경 사항을 기록해 두면, 미래의 보안 감사나 네트워크 개선 작업에 유용한 참고 자료가 됩니다.
  • 지속적인 업데이트와 관리: 네트워크 환경은 지속적으로 변화하므로, ACL도 새로운 보안 위협, 변경된 네트워크 구성, 새로운 서비스 요구 사항에 맞게 주기적으로 검토하고 업데이트해야 합니다.

ACL 실습을 진행할 때, 위의 지침들을 철저히 따르는 것이 중요합니다.

이를 통해 네트워크 보안을 강화하고, 불필요한 접근을 효과적으로 차단할 수 있습니다.

또한, 실습 과정에서 발생할 수 있는 다양한 문제를 예방하고, 보안 정책을 효과적으로 구현할 수 있습니다.


 

패킷 트레이서 예제 파일


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

댓글에 남겨주신 내용

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

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

-

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

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

감사합니다!

반응형
반응형

오늘은 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