KnockOn

[3주차 TIL] KnockOn Bootcamp MySQL

성밍쟁 2024. 12. 20. 18:00
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
반응형