Published 2022. 8. 12. 19:07

(Week 5 - Day 5) - (2/2)

데이터베이스

- 여러 사용자가 공유하여 사용할 목적으로 데이터를 체계화하여 통합, 관리하는 데이터의 집합체

- 데이터의 저장 공간

- 종류로는 관계형, 계층형, NoSQL 데이터베이스 등이 있다.

단위

Database : 저장소에 구분되는 가장 큰 단위

Table : 데이터베이스에 저장하기 위해 구성하는 첫 단계

Column(=Field) : 관계형 데이터베이스에서 행을 구분하는 기준

Row(=Record) : 데이터를 저장하는 값으로 칼럼 내의 하나의 값

id name email phone 필드 이름
1 Moya moya@nobreak.co.kr 010-1111-1111 레코드(로우)
2 Suk suk@nobreak.co.kr 010-2222-2222  
3 Koya koya@nobreak.co.kr 010-3333-3333  
필드(칼럼) 필드값  

특징

- 데이터 무결성

- 데이터 독립성

- 보안

- 데이터 중복 최소화

- 데이터의 안전성 향상

DBMS

- Database Management System

- 데이터베이스를 관리, 운영하는 소프트웨어

- 사용자는 DBMS가 관리하는 데이터에 접근하여 데이터를 공유할 수 있음

관계형 데이터베이스

- Relational Database

- 가장 널리 사용되는 데이터베이스의 형태이다.

- 키(Key) 와 값(Value)를 표 형식으로 구성한 데이터베이스

- MariaDB, MySQL, Oracle Database, IBM DB2, MS-SQL등이 존재한다.


Maria DB DBMS 설치

Maria DB 패키지 설치

yum -y install mariadb-server

MariaDB 서비스 실행

systemctl start mariadb
systemctl enabel mariadb

방화벽 연결(필요한 경우만)

firewall-cmd --add-service=mysql
firewall-cmd --add-service=mysql --permanent

데이터베이스 접속

mysql -u root -p
Enter password : #초기 root 비밀번호는 없다.(Press Enter)

MySQL 주요 옵션

-h, --host=name     Connect to host.

-u, --user=name     User for login if not current user.

-p, --password[=name] 

-P, --port=#        Port number to use for connection or 0 for default to, in

실행 예시

입력문 끝에 세미콜론(;) 을 붙여야 한다

보안 설정

- MariaDB 설치 후 초기 보안이 취약하기 때문에 보안 설정을 강화할 필요성이 있다.

mysql_secure_installation

위 명령어를 사용해서 보안설정을 강화할 수 있다.


SQL 쿼리문의 종류

DDL

- Data Define Language

- 데이터 정의 언어

- 데이터베이스, 테이블, 뷰, 인덱스 등의 데이터베이스 객체 생성, 삭제, 변경 등에 사용하는 질의어

- CREATE, DROP, ALTER, TRUNCATE 등

DML

- Data Maniqulation Language

- 데이터 조작 언어

- 데이터를 검색, 삽입, 수정, 삭제하는 등 데이터를 다루는 질의어

- SELECT, INSERT, UPDATE, DELETE 등

DCL

- Data Control Language

- 데이터 제어 언어

- 사용자에게 권한 부여, 권한 회수 등을 할 때 사용하는 질의어

- GRANT, REVOKE, DEVY 등


DDL 데이터베이스 관리

데이터베이스 생성

CREATE DATABASE 데이터베이스_이름;

데이터베이스 목록 확인

SHOW DATABASES;

테이블 생성

데이터베이스 접근

USE 데이터베이스_이름;

테이블 생성

CREATE TABLE 테이블_이름 (
	필드이름_1	데이터_타입	옵션,
	필드이름_2	데이터_타입	옵션,
	...
	필드이름_n	데이터_타입	옵션
);

확인

SHOW TABLES;

DESCRIBE 테이블_이름;


사용자 생성

CREATE USER 사용자_이름@접속_호스트 [IDENTIFIED BY '비밀번호'];
CREATE USER user01@'localhost' IDENTIFIED BY 'user01-pass';

접속 호스트 지정

localhost : 로컬 호스트

192.168.56.101 : 특정 IP 주소

% : 모든 호스트

192.168.56.% : IP 주소가 192.168.56. 으로 시작하는 IP 주소에서 접속 가능

확인

USE mysql;	#처음으로 이동
SELECT User,Host,Password FROM user WHERE User='user01'


테이블 구조 변경

테이블에 필드 추가

ALTER TABLE 테이블_이름 ADD 필드_이름 데이터_타입 [옵션];

테이블에 필드 제거

ALTER TABLE 테이블_이름 DROP 필드_이름

테이블 필드 이름 수정

ALTER TABLE 테이블_이름 CHANGE 필드_기존_이름 필드_새로운_이름 타입 [옵션];


DML 데이터베이스 관리

데이터 조회

SELECT 필드이름1, 필드이름2, ... , 필드이름N FROM  테이블_이름 [WHERE 조건];

데이터 삽입

INSERT INTO 테이블_이름 (필드이름1, 필드이름2, ...., 필드이름N) VAULES (value1,value2, . .)

확인

SELECT * FROM 테이블_이름

데이터 수정

UPDATE 테이블_이름 SET 필드_이름 = 값 . . . [WHERE 조건];

해당 테이블의 모든 필드의 값을 변경

- WHERE 조건 절이 지정된 경우 해당 조건에 대한 부분만 수정이 이루어진다.

철수 를 길동으로 바꾼다.

데이터 삭제

DELETE FROM 테이블_이름 [WEHRE 조건];

해당 테이블의 모든 필드의 값 삭제

- WEHRE 조건 절이 지정된 경우, 해당 조건에 대한 부분만 삭제


DCL 데이터베이스 관리

권한 부여

데이터베이스 생성

- 사용자가 사용할 데이터베이스 생성

CREATE DATABASE user01;

데이터베이스에 사용 권한 부여

GRANT 퍼미션 ON 데이터베이스 TO 사용자@접속_호스트

테이블에 사용 권한 부여

GRANT 퍼미션 ON 테이블 TO 사용자@접속_호스트;

권한 적용

- 입력을 해도 적용이 안 될 가능성이 있기에 새로고침과 같은 역할의 명령어를 입력해야 한다.

FLUSH PRIVILEGES;

권한 회수

데이터베이스에 사용 권한 회수

REVOKE 퍼미션 ON 데이터베이스 FROM 사용자@접속_호스트;

테이블에 사용 권한 회수

REVOKE 퍼미션

권한 적용

- 입력을 해도 적용이 안 될 가능성이 있기에 새로고침과 같은 역할의 명령어를 입력해야 한다.

FLUSH PRIVILEGES;

 

복사했습니다!