본문 바로가기
정보보안/이론

[KITRI] DB 서버

by 민-Zero 2020. 6. 17.

후에 DB를 따로 집중적으로 정리할것이며 여기서는 리눅스서버에서 DB를 설치하고 활용하는 방법에 대해서만 정리하자.

 

DataBase 용어

Data : 일반적인 사실, 자료
Table : 데이터를 표 형식으로 표현
Record : Row 또는 Tuple 이라고도 함, 테이블의 행
Field : Colume 이라고도 함, 테이블의 열, 동일한 필드의 값은 동일한 데이터 형식이 와야한다.
Primary Key Filed : 주 키 필드, 레코드를 식별하기 위한 유일한 값을 갖고 비어있지 않은 필드
Foregin Key Field : 외래키 필드, 다른 테이블의 주 키와 대응되는 필드로 2개의 테이블을 연관시키는 필드이다.
Data Type : 각 필드에 입력할 값의 타입(정수, 문자, 날짜 등)
-CHAR : 고정 길이 문자열
-VARCHAR : 가변 길이 문자열
-INT : 정수형
-FLOAT : 실수형
-DATE : 날짜형
-TIME : 시간형
-DATETIME : 날짜 시간형

DB : 테이블을 저장하는 저장 공간 또는 테이블의 집합
DBMS(DataBase Managemen System) : 데이터베이스 관리 시스템, DB들을 관리하는 소프트웨어
RDBMS(Relational DBMS) : 관계형 DBMS, 표형식으로 만들어진 DBMS로 테이블과의 관계성을 기반으로 둔 DBMS를 말한다. Oracle, MySQL, MariaDB, MS-SQL
NoSQL :  MogoDB
SQL(Structed Query Language) : 구조화된 질의 언어로 DBMS가 이해할 수 있는 언어이다.

 

CentOS5 에서 실습

rpm 명령을 통해 설치되어있는 DB를 확인하면 mysql-5.0 버전이 설치되어있는 것을 확인할 수 있다. yum list를 통해 설치할 수 있는 DB를 확인하면 많은 mysql 패키지가 보이는데 5.0버전 등은 한글의 경우 깨져서 나오는 경우가 있어 5.5버전을 사용할것이다. 5.0버전은 mysql, mysql-server 로 이름이 지정되어있고 5.1버전은 mysql51-mysql, mysql51-mysql-server 5.5버전은 mysql55-mysql, mysql55-mysql-server 로 되어있다.

 

yum install mysql55-mysql mysql55-mysql-server 로 5.5버전 다운로드 하면된다.

그리고 mysqld 서버를 구동하려고 하면 동작하지 않는다. 이유는

구동되는 데몬의 이름이 변경되어 있기 때문이다.

따라서 기존처럼 service mysqld restart로 하고 싶으면 해당 이름을 변경하면 된다.

또한 mysqld를 맨 처음 구동하면 여러 주의사항들을 알려주고 두번째 구동부터는 조용히 구동된다.

ls -lh /var/lib/mysql/ 데이터 베이스를 시작하면 생성되는 디렉터리이다. DB를 생성하면 해당 위치에 저장되며 DB를 백업하고 싶다면 해당 디렉토리를 백업하면 된다.

mysqladmin 명령어로 구동중인 mysql에 접속할때 사용할 비밀번호를 생성할 수 있다.

mysqladmin -u root -h localhost password '456456' -p 로 기존에 설정한 비밀번호를 수정할 수 있고 이전의 암호를 알아야만 변경할 수 있다.

mysql -u root -h localhost -p 로 위에 설정한 암호를 통해 접속할 수 있다.
mysql -u root -h localhost -p123123 으로 암호를 보여준 채로 접속할 수도 있지만 프롬프트에 비밀번호를 작성하게 되면 기록에 남기 때문에 권장하지 않는다.

정상적으로 구동되는지 확인하기 위해 임의로 shopping_db 라는 DB를 하나 생성해서 show 명령어를 통해 확인하면 정상적으로 생성된것을 확인할 수 있다.

 

기본 SQL(Structed Qeury Language)문
DB는 대소문자를 구분한다. 시스템에서 예약한 언어들은 대소문자 구분없이 사용해도 되지만 그 이외의 단어들은 대소문자를 구분하여 사용해야 한다.
시스템 예약어 : 시스템에서 미리 정해(선점)높은 단어로 사용자가 임의로 사용해서는 안된다. 대/소문자를 구분하지 않는다.
사용자 정의어 : 사용자가 임의로 사용할 수 있는 단어이다. 대/소문자를 구분한다.
my_average : snake case, 이와 같은 형태를 사용자 정의어에 주로 사용
MyAverage : 함수나 클래스에 주로 사용하는 형태

시스템 예약어는 주로 대문자로 표기하고(소문자로 사용해도 상관은 없다.) 절대 생략하거나 띄어쓰면 안된다.
사용자 정의어는 주로 소문자로 표기하며, 오타를 내거나 생략해도 그대로 적용된다.

1. DataBase
SHOW DATABASES; : 생성된 DB 확인
CREATE DATABASE [DB명]; : 'DB명' 으로 데이터베이스 생성
DROP DATABASE [DB명]; : 해당 DB 제거
USE [DB명] : 작업할 데이터 베이스를 선택, 선택하지 않으면 세부적인 내용등을 확인할 수 없다.

2. Table
CREATE TABLE [Table명] (필드명1 필드타입 [옵션], ...): 현재 작업중인 DB에 테이블 생성, 필드명1을 데이터 타입을 지정한다.
DROP TABLE [Table명] : 'Table명'인 테이블 제거
SHOW TABLES : 테이블의 목록확인
EXPLAIN [Table명] : 테이블의 구조 확인 (DESC [Table명] 도 가능)
ALTER TABLE [옵션] : 테이블 수정, 옵션뒤에 NOT NULL 을 붙여 입력을 꼭하도록 설정할 수도 있다.
-옵션
칼럼 추가 (Add). AFTER를 사용하면 위치지정 가능 안쓰면 맨뒤에 추가 FIRST 쓰면 맨앞.
ALTER TABLE [Table명] ADD [추가 칼럼명] [타입] [AFTER 칼럼명]; 
칼럼 타입 변경 (Modify)
ALTER TABLE [Table명] MODIFY COLUMN [칼럼명] [변경 타입];
칼럼 이름,타입 변경 (Change)
ALTER TABLE [Table명] CHANGE COLUMN [이전 칼럼명] [변경 칼럼명] [변경 타입];
칼럼 삭제 (Drop)
ALTER TABLE [Table명] DROP COLUMN [칼럼명];
테이블 이름 변경 (RENAME)
ALTER TABLE [Table명] RENAME [변경 Table명];

3. 레코드
INSERT INTO [테이블명] VALUES (값1, 값2, ..) : 레코드 추가
INSERT INTO [테이블명] (필드1, 필드2, ..) VALUES (값1, 값2, ..) : 특정 필드에만 레코드 추가
이때 나열된 필드는 반드시 NOT NULL 필드를 포함하여야 한다.
DELETE FROM [테이블명] WHERE [조건] : 조건을 만족하는 레코드 삭제
UPDATE [테이블명] SET [필드명1=수정할값1, 필드명2=수정할값2, ..] WHERE 조건; : 조건을 만족하는 레코드의 해당 필드들의 값을 수정

4. 조회
SELECT 필드명1, 2, .. FROM 테이블명 WHERE 조건; 해당 테이블에서 조건을 만족하는 필드들 검색해서 출력

 

만들어 둔 shopping_db에 데이터를 채워보자.

DB에 테이블을 생성하기 위해서는 우선 어떤 DB를 사용할지 명시해주어야 한다. use 명령어를 통해 shopping_db를 사용하도록 하고 create table 명령어를 통해 customer란 테이블을 생성하고 각각의 colume을 생성한다.

그럼 show 명령어를 통해 생성한 customer 라는 테이블을 확인할 수 있고 테이블의 구조를 확인해보면 필드들이 생성된것을 확인할 수 있다.

insert 명령어로 각각의 colume에 데이터를 넣고 select 문을 통해 확인해보면 정상적으로 데이터가 들어가있는 것을 확인할 수 있다.

'정보보안 > 이론' 카테고리의 다른 글

[KITRI] 리눅스 메일서버  (0) 2020.05.24
[KITRI] Day 19. rndc 원격제어  (0) 2020.05.24
[KITRI] Day18. master, slave 복습  (0) 2020.05.19
[KITRI] Day17. 네임 서버 master, slave  (0) 2020.05.19
[KITRI] Day16. 네임 서버 구축  (0) 2020.05.15

댓글