[3주차 TIL] KnockOn Bootcamp MySQL

2024. 12. 20. 18:00· KnockOn
목차
  1. 프롤로그
  2. MySQL이란?
  3. Ubuntu에 MySQL 설치하기
  4. mysql_secure_installation
  5. MySQL 비밀번호 설정
  6. DDL(Data Definitaion Language)
  7. DML(Data Manipulation) 
  8. DCL(Data Control Language) 
  9. 에필로그
728x90
반응형

프롤로그

오늘도 빠르게 달려보자.

 

 

MySQL이란?

오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)이다. 데이터를 테이블 형식으로 저장하고, SQL(Structured Query Language)을 사용하여 데이터를 관리 하는 시스템이다. 

웹 개발에서 데이터를 저장하고, 관리하는데 널리 사용되며, Linux, Apache, MySQL, PHP/Python/Perl 에서 중요한 역할을 한다.

정리를 하자면, MySQL은 데이터들을 테이블에 저장하는 관계형 데이터베이스(RDBMS)이고, 각 테이블들은 행과 열로 구성되어 있다. SQL문을 사용하여 데이터를 쿼리하고 수정할 수 있다.

이름에서부터 MySQL, SQL을 쓰는건데, 많은 양의 데이터를 처리할 수 있고, 데이터베이스 서버를 확장할 수 있다.

 

 

Ubuntu에 MySQL 설치하기

sudo apt update
sudo apt upgrade
sudo apt install mysql-server

를 통해서 MySQL을 설치한다.

sudo systemctl start mysql
sudo systemctl status mysql

로 MySQL 서버를 실행하고 상태를 확인할 수 있다.

저 데이터베이스에 접근을 하기 위해선

sudo mysql -u root -p

입력하고 비밀번호는 아직 설정하지 않았기에 그냥 엔터를 누르면 접속이 될 것이다.

show databases;

를 입력후 엔터를 누르면

데이터베이스에 접근해서, 현재 어떤 데이터베이트가 존재하는지 확인할 수 있다.

데이터베이스를 종료하기 위해서

exit

를 입력하면 탈출 할 수 있다.

 

 

mysql_secure_installation

MySQL 서버의 보안 설정을 강화하기 위한 도구이다.

sudo mysq_secure_installation

을 입력하면

1. 루트 계정 비밀번호 생성 : 비번 보안 정도는?

2. 루트 계정의 원격 접속 제한

3. 익명 사용자 제거

4. 테스트 데이터베이스 제거

5. 권한 테이블 새로고침

순으로 물어보는데, 일단 난 MEDIUM으로 설정해놓고 나머지 전부다 yes만 입력해주었다.

 

 

MySQL 비밀번호 설정

일단은 보안 수준을 다시 LOW로 설정하겠다.

sudo mysql
SET GLOBAL validate_password.policy = LOW;

 

그 다음 비밀번호 설정을 위해

ALTER USER 'root'@'localhost' IDENTIFIED with mysql_native_password by '사용자 설정 비밀번호';

이렇게 입력해주면, 비밀번호가 설정된다.

이제

exit;
sudo mysql -u root -p

로 접근하면

비밀번호를 입력해야만 들어갈 수 있다.

 

 

DDL(Data Definitaion Language)

데이터베이스의 구조나 스키마를 정의하는데 사용되는 SQL 명령어이다. 대충 데이터베이스 객체를 생성, 수정, 삭제하는 작업을 수행한다.

처음에

show databases;

를 해보면

이런 데이터베이스들이 있다. 일단 새로운 데이터베이스 'test'를 하나 생성해보자.

create database test;
show databases;

test가 생성되었고, 이제 저기 test라는 데이터베이스에 들어가서 테이블을 만들어 보자. 

USE test;

를 하면 해당 데이터베이스를 사용하게 되고

여기서

CREATE TABLE users(
	id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    age INT
);

를 입력하면, users라는 테이블이 생성이 된다.

그러고, 테이블 구조를 확인하기 위해서

describe users;

를 하게 되면

방금 생성한 users의 구조를 확인할 수 있다.

만약 지울려면, 

DROP TABLE users;

를 사용하면 된다.

 

DML(Data Manipulation) 

데이터를 조작하는데 사용된다. 데이터의 입력, 수정, 삭제, 조회 등에 수행된다.

아까 만들었던 users 테이블에 데이터를 집어넣어보자.

INSERT INTO users (name, age) VALUES ('a', 20);
INSERT INTO users (name, age) VALUES ('b', 30);
INSERT INTO users (name, age) VALUES ('c', 40);

이렇게 INSERT INTO 테이블 ~~~ VALUES 를 사용해서 데이터베이스에 데이터를 넣을 수 있다.

그리고 데이터 조회를 위해선

SELECt * From users;

를 통해서

어떤 데이터가 있는지 확인가능하다.

이제 나이들을 전부 바꿔보자. 데이터를 수정할 때는 UPDATE를 사용한다.

UPDATE users SET age = 25 WHERE name = 'a';
UPDATE users SET age = 35 WHERE name = 'b';
UPDATE users SET age = 45 WHERE name = 'c';

이렇게 수정이 되는 것을 확인할 수 있다.

마지막으로 데이터를 지울려면 DELETE를 사용한다.

delete from users where age = 25;

나이가 25살인 a가 삭제되었다.

 

 

DCL(Data Control Language) 

데이터베이스에 대한 권한 관리, 권환 부여 및 회수 등에 사용된다.

여긴 유저를 직접 건들여야해서, 실습은 없고 어떻게 하는지만 적겠다.

특정 사용자에게 권한을 주어줄려면

GRANT SELECT, INSERT ON test.* TO 'username'@'localhost';
GRANT ALL PRIVILEGES ON test.* TO 'username'@'localhost';

이렇게 GRANT를 이용해서 권한을 부여해준다. 권한 있는 사람만 위에 있던 명령어들을 사용할 수 있다.

권한이 부여가 되었으면 적용을 시켜야ㅕ하는데

FLUSH PRIVILEGES;

로 적용시킨다.

 

권한을 뺄려면 아까랑 비슷한데, GRANT를 REVOKE로 바꿔주기만 하면 된다

REVOKE SELECT, INSERT ON test.* TO 'username'@'localhost';
REVOKE ALL PRIVILEGES ON test.* TO 'username'@'localhost';

 

 

 

에필로그

간단한 내용들만 있는데, 실제적으로 사용하고 적용하려면은 어렵다.

728x90
반응형
저작자표시 비영리 (새창열림)

'KnockOn' 카테고리의 다른 글

[3주차 TIL] KnockOn Bootcamp PHP와 MySQL 연결, 회원가입과 로그인  (1) 2024.12.22
[3주차 TIL] KnockOn Bootcamp PHP  (0) 2024.12.21
[3주차 TIL] KnockOn Bootcamp Apache  (2) 2024.12.20
[1주차 TIL] KnockOn Bootcamp HTML, CSS, JS  (1) 2024.12.09
[1주차 TIL] KnockOn Bootcamp 프록시  (1) 2024.12.07
  1. 프롤로그
  2. MySQL이란?
  3. Ubuntu에 MySQL 설치하기
  4. mysql_secure_installation
  5. MySQL 비밀번호 설정
  6. DDL(Data Definitaion Language)
  7. DML(Data Manipulation) 
  8. DCL(Data Control Language) 
  9. 에필로그
'KnockOn' 카테고리의 다른 글
  • [3주차 TIL] KnockOn Bootcamp PHP와 MySQL 연결, 회원가입과 로그인
  • [3주차 TIL] KnockOn Bootcamp PHP
  • [3주차 TIL] KnockOn Bootcamp Apache
  • [1주차 TIL] KnockOn Bootcamp HTML, CSS, JS
성밍쟁
성밍쟁
성밍쟁 공붕방
성밍쟁
너드인의 밤
성밍쟁
전체
오늘
어제
  • 분류 전체보기 (182)
    • 일상 (1)
    • 스펙업 (7)
      • 학회 (0)
      • 멋쟁이사자처럼 (2)
      • 2024 winter-study (5)
    • 코딩테스트 - 백준 (9)
    • 보안 스터디 (56)
      • 시스템 해킹 (10)
      • 리버스 엔지니어링 (0)
      • 웹 해킹 (38)
      • 암호학 (8)
    • bandit (15)
    • 웹 개발 (11)
    • 머신러닝 (0)
    • 데이터베이스 (9)
    • KnockOn (72)
    • DevOps (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 드림핵
  • /bin
  • 1074
  • 11656
  • 1193
  • 2563
  • 3Des
  • 9613
  • AES
  • Alias

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
성밍쟁
[3주차 TIL] KnockOn Bootcamp MySQL
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.