본문 바로가기
STUDY

[멋쟁이사자처럼부트캠프_그로스마케팅] Day6 GCP VM 설정 및 MariaDB 설치 & SQL 기본 문법

by vol2 2025. 2. 13.

Day 6 목표: GCP VM 설정 및 MariaDB 설치 & SQL 기본 문법 정리


1. GCP & VM 설정 과정

  • GCP VM 설정 & SSH 연결
  • : GCP(Google Cloud Platform)에서 VM 인스턴스 생성 후, SSH를 이용하여 원격 접속하는 과정

1️⃣ GCP에서 VM 인스턴스 생성

2️⃣ 운영체제(OS) 선택 → Ubuntu 사용

3️⃣ SSH 키 생성 (Puttygen 사용, Windows 환경 기준)

4️⃣ GCP에서 SSH 키 등록

5️⃣ FileZilla를 사용하여 .ppk 키로 SSH 접속 확인 (파일 전송 가능)


2. 리눅스 기본 명령어

VM에 접속한 후, 파일 및 디렉토리 관리, 권한 설정을 위한 주요 리눅스 명령어

 

1) 기본 디렉토리 이동 및 파일 조회

명령어 설명

cd / 루트 디렉토리로 이동
cd var /var 디렉토리로 이동
cd .. 상위 디렉토리로 이동
pwd 현재 작업 디렉토리 확인
ls 현재 디렉토리의 파일 목록 출력
ls -li 파일 목록 + 상세 정보(권한 포함) 조회
ls -al 숨김 파일까지 포함하여 목록 출력
ll ls -li를 짧게 입력하는 명령어

 

2) 디렉토리 생성 및 삭제

명령어 설명

mkdir 디렉토리명 새 디렉토리 생성
sudo mkdir 디렉토리명 관리자 권한으로 디렉토리 생성
sudo rm -rf 디렉토리명 디렉토리 및 내부 파일 강제 삭제

 

3)  파일 및 디렉토리 권한 설정

리눅스의 권한(RWX) 개념

  • r(읽기), w(쓰기), x(실행) → 각각 4, 2, 1 값 부여
  • 777 → 모든 권한 부여 (rwx를 모두 허용)

📌 권한 변경 예제

sudo chmod -R 777 gm-lab1  # gm-lab1 디렉토리 및 하위 폴더 포함 모든 권한 부여

✔ -R 옵션: 하위 디렉토리까지 적용 (없으면 현재 디렉토리만 변경)


3. MariaDB 설치 및 기본 설정

MariaDB(오픈소스 데이터베이스)를 설치하고 계정, 데이터베이스, 테이블을 생성하는 과정

1)  MariaDB 설치 및 실행

sudo apt update
sudo apt install mariadb-server -y
sudo systemctl start mariadb  # MariaDB 시작
sudo systemctl enable mariadb  # 부팅 시 자동 실행
sudo mysql_secure_installation  # 보안 설정 (root 비밀번호 설정)
sudo mysql -u root

 

2) MariaDB 기본 명령어

명령어 설명

sudo mysql -u root Ubuntu에서 root 계정으로 MariaDB 접속
SHOW DATABASES; 데이터베이스 목록 조회
SHOW TABLES; 현재 데이터베이스의 테이블 목록 확인
USE mudb; 특정 데이터베이스 사용
CREATE DATABASE mydb; 데이터베이스 생성
DROP DATABASE mydb; 데이터베이스 삭제
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password123'; 사용자 계정 생성
DROP USER 'user1'@'localhost'; 사용자 계정 삭제
ALTER USER 'user1'@'localhost' IDENTIFIED BY 'newpassword123'; 특정 사용자의 비밀번호 변경
SET PASSWORD = PASSWORD('newpassword123'); 로그인한 사용자의 비밀번호 변경
GRANT ALL PRIVILEGES ON mydb.* TO 'user1'@'localhost'; 특정 데이터베이스의 모든 권한 부여
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'user1'@'localhost'; 특정 권한만 부여
REVOKE INSERT, UPDATE ON mydb.* FROM 'user1'@'localhost'; 특정 권한 회수
FLUSH PRIVILEGES; 권한 변경 사항 즉시 적용
SELECT User, Host FROM mysql.user; 사용자 목록 조회

4. SQL 기본 문법

  • DDL (Data Definition Language, 데이터 정의 언어)예) CREATE, ALTER, DROP, TRUNCATE
  • 데이터베이스, 테이블 등의 구조를 정의하는 명령어
  • DML (Data Manipulation Language, 데이터 조작 언어)예) SELECT, INSERT, UPDATE, DELETE
  • 데이터를 조회, 삽입, 수정, 삭제하는 명령어
  • DCL (Data Control Language, 데이터 제어 언어)예) GRANT, REVOKE
  • 데이터 접근 권한을 제어하는 명령어
  • TCL (Transaction Control Language, 트랜잭션 제어 언어)예) COMMIT, ROLLBACK, SAVEPOINT
  • 데이터베이스 내의 트랜잭션을 제어하는 명령어

  • SQL 예약어(Reserved Word)이미 SQL에서 정해진 단어이므로, 테이블명이나 컬럼명으로 사용할 수 없음.
  • 예제)
  • SQL에서 특정한 기능을 수행하는 키워드
  • SELECT, INSERT, UPDATE, DELETE → 데이터 조작 관련
  • CREATE, ALTER, DROP → 테이블 구조 변경
  • WHERE, ORDER BY, GROUP BY → 쿼리 조건 지정
  • CHANGE → 컬럼 변경 (MySQL에서 사용)

1. 테이블 생성 (CREATE TABLE)

CREATE TABLE ad_campaigns (
    id INT PRIMARY KEY AUTO_INCREMENT,
    campaign_name VARCHAR(255),
    platform VARCHAR(50),
    impressions INT,
    clicks INT,
    conversions INT,
    cost DECIMAL(10,2),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

✔ PRIMARY KEY → 고유한 값 설정

✔ AUTO_INCREMENT → 값 자동 증가

✔ NOT NULL → 값이 반드시 존재해야 함

✔ UNIQUE → 중복 허용 안 됨

✔ DEFAULT CURRENT_TIMESTAMP → 생성 시간 자동 입력


2. 데이터 입력 (INSERT)

INSERT INTO customers (name, email)
VALUES ('철수', 'chulsoo@example.com');

✔ 컬럼에 DEFAULT 값이 설정되어 있으면, 해당 컬럼은 생략 가능


3. 데이터 조회 (SELECT)

SELECT * FROM customers;  -- 모든 데이터 조회
SELECT name, email FROM customers WHERE customer_id = 1;  -- 특정 고객 정보 조회

✔ * → 모든 컬럼 조회

✔ WHERE → 특정 조건에 맞는 데이터만 필터링


4. 데이터 수정 (UPDATE)

UPDATE customers
SET email = 'new_email@example.com'
WHERE customer_id = 1;

✔ SET을 사용하여 특정 컬럼 값 수정

✔ WHERE을 사용하여 수정할 행 지정 (없으면 전체 수정됨)


5. 데이터 삭제 (DELETE)

DELETE FROM customers WHERE customer_id = 1;

✔ 특정 조건을 만족하는 데이터만 삭제 (WHERE 필수!)

DROP TABLE, TRUNCATE TABLE, DELETE FROM 차이점

명령어 삭제 대상 테이블 유지 여부 AUTO_INCREMENT 초기화

DROP TABLE 테이블 + 데이터 삭제 ❌ 삭제됨
TRUNCATE TABLE 모든 데이터 삭제 ✅ 유지됨 ✅ 초기화됨 (MySQL)
DELETE FROM 특정 데이터 삭제 (WHERE 가능) ✅ 유지됨

6. NOT NULL을 사용하는 이유

NOT NULL 제약 조건은 필수 입력값을 보장하기 위해 사용됨.

값이 NULL이면 중요한 데이터가 빠질 수 있기 때문에 방지함.

예제

CREATE TABLE users (
    user_id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,  -- 이름은 반드시 입력해야 함
    email VARCHAR(255) UNIQUE NOT NULL  -- 이메일은 중복 불가 + 필수 입력
);

✔ NOT NULL을 사용하지 않으면 NULL 값이 들어갈 수도 있음

✔ NOT NULL을 사용하면 데이터가 없을 경우 입력할 때 오류 발생

📌 오류 예제 (NOT NULL 위반)

INSERT INTO users (user_id, email) VALUES (1, 'test@example.com');

❌ 오류 발생: name 컬럼은 NOT NULL이므로 반드시 입력해야 함!