(Week 5 - Day 5) - (2/2)
데이터베이스
- 여러 사용자가 공유하여 사용할 목적으로 데이터를 체계화하여 통합, 관리하는 데이터의 집합체
- 데이터의 저장 공간
- 종류로는 관계형, 계층형, NoSQL 데이터베이스 등이 있다.
단위
Database : 저장소에 구분되는 가장 큰 단위
Table : 데이터베이스에 저장하기 위해 구성하는 첫 단계
Column(=Field) : 관계형 데이터베이스에서 행을 구분하는 기준
Row(=Record) : 데이터를 저장하는 값으로 칼럼 내의 하나의 값
id | name | 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;
'Linux' 카테고리의 다른 글
[Linux] 26. Apache 웹 서버 - (가상 호스트_IP 기반 ~) (0) | 2022.08.11 |
---|---|
[Linux] 25. Apache 웹 서버(~ 가상 호스트_이름 기반) (0) | 2022.08.11 |
[Linux] 24. iSCSI 블록 스토리지 (0) | 2022.08.10 |
[Linux] 23. NFS 스토리지 (0) | 2022.08.10 |
[Linux] 22. FTP 서버 (0) | 2022.08.09 |