Sumin

공부하는 중

Study/리눅스

데이터베이스 서버 구축 개념 정리

sum1n52 2026. 4. 10. 19:50

08. 데이터베이스 서버 구축

08.1 DBMS

08.1.1 DBMS 역할

DBMS (DataBase Management System)는 데이터베이스를 직접 응용 프로그램들이 조작하는 것이 아니고 데이터베이스를 조작하는 별도의 소프트웨어

 

데이터를 저장할 때 무작위로 저장하는 것이 아니라 테이블의 형태로 저장해 두고 필요에 따라 데이터를 가공처리해서 용도에 맞는 데이터를 사용한다는 것을 의미한다.

 

08.1.2 데이터베이스

데이터베이스 (DB; DataBase)는 많은 데이터를 모아 사용하고자 하는 목적에 따라 특정한 형식에 의거 저장되어 가공처리 되는 것

 

데이터베이스의 형태로 저장된 방대한 양의 각종 정보를 체계적으로 관리하는 기업용 소프트웨어와 인터넷의 발달과 함께 기업 정보화가 급속도로 진행되면서 DBMS는 컴퓨터 운영체제 (OS; Operating System)에 버금가는 중요한 소프트웨어로 인식되어 자리매김하고 있다.

 

08.1.3 SQL 문

SQL (Structured Query Language)이란 데이터베이스를 사용할 때 데이터베이스에 접근할 수 있는 데이터베이스의 하부 언어

 

다른 표현으로는 구조화 질의어라고 하고, 데이터베이스용 질의 언어인 SQL 명령문에는 데이터 정의어 (DDL; Data Definition Language)와 데이터 조작어 (DML; Data Manipulation Language)를 포함하고 있다.

 

SQL 명령문은 대/소문자를 엄격하게 구별하지 않으며 각 문장의 끝은 세미콜론 (;)으로 끝내야 한다.

 

다음은 데이터베이스의 생성, 삭제, 조회, 사용과 관련된 SQL 명령문이다.

명령문 의미 사용 예
SHOW 데이터베이스 관련 SQL 명령문 > show databases;
CREATE 새로운 데이터베이스 생성 > create database DB_이름;
USE 작업할 데이터베이스 선택 > user DB_이름;
DROP 데이터베이스 삭제 (소속된 테이블도 모두 삭제됨) > drop database DB_이름;

 

데이터베이스를 생성한 다음에는 테이블을 생성하는 과정으로 전개된다. 이 과정에서 DBMS가 수행되므로 선행되어야 할 부분은 DB 생성이 우선이라는 점이다. 생성된 DB를 삭제하게 되면 그와 관련된 모든 테이블도 함께 삭제된다. 테이블을 조작하려면 먼저 소속되어 있는 데이터베이스와의 연관성에 대한 이해가 필요하다. 다음은 자주 사용하는 테이블 관련 SQL 명령문이다.

명령문 의미 사용 예
SHOW 테이블 목록 출력 db> show tables;
CREATE 새로운 테이블 생성 db> create table 테이블_이름;
DESC 테이블 구조 확인 (또는 explain 명령문 사용) db> desc 테이블_이름;
DROP 테이블 삭제 db> drop table 테이블_이름;

 

테이블을 생성할 때는 각 필드에 어떠한 데이터를 저장할 것인지에 대한 자료형을 저장해 주어야 한다. 필드에 자료형을 정의할 때는 입력할 데이터의 종류와 크기를 감안하여 선언해야 한다. 데이터의 크기보다 필드의 크기를 적게 선언할 경우 오류가 발생하거나 데이터 중 일부가 소실될 수 있으므로 주의해야 한다. 다음은 MariaDB에서 테이블을 생성할 때 사용되는 자료형이다.

자료형 의미
varchar (n) 개수 n개를 지정하여 가변성 문자열 지정 (메모리 효율성)
char (n) 개수 n개를 지정하여 고정성 문자열 지정 (메모리 비효율성)
int 정수형 숫자를 입력받을 필드의 자료형 지정
float 실수형 숫자를 입력받을 필드의 자료형 지정
date 날짜를 입력받을 필드의 자료형 지정
time 시각을 입력받을 필드의 자료형 지정

 

테이블을 생성할 때는 테이블 이름 다음에 괄호를 열고 필드명과 자료형을 다음과 같은 형태로 지정한다. 다음은 테이블을 생성하기 위한 SQL 명령문이다.

 

데이터베이스, 테이블 생성하기 실습 예

-> CREATE database testDB; 명령어로 testDB라는 데이터베이스를 생성한다.

-> USE testDB; 명령어로 testDB라는 데이터베이스로 이동한다.

-> CREATE TABLE student; 명령어로 테이블을 생성하고, SHOW TABLES;라는 명령어로 테이블 목록을 출력해서 확인한다.

 

데이터베이스의 테이블에 데이터를 입력하거나 삭제할 때는 레코드 단위로 작업이 수행된다. 다음은 레코드를 삽입하거나 삭제, 수정하기 위해서 사용되는 SQL 명령문이다.

 

insert into 명령어는 지정한 테이블에 새로운 레코드를 추가한다. 이 과정에서 주의해야 할 점은 테이블을 생성할 때 지정한 자료형과 일치되도록 데이터를 입력해야 한다.

형식은 insert into 테이블명 values(값1, 값2, ...);

 

update 명령어는 기존 테이블에 저장되어 있는 레코드를 수정한다.

형식은 update 테이블명 set 필드명1=수정할_값, 필드명2=수정할_값, ... where 조건;

 

delete 명령어는 기존 테이블에 저장된 레코드 중에서 지정한 레코드를 삭제한다.

형식은 delete from 테이블명 where 조건;

 

select 명령어는 테이블에 저장된 레코드를 조회한다.

형식은 select 필드명1, 필드명2, ... from 테이블명 where 조건;

 

08.1.4 접근 권한 부여

데이터베이스 작업은 주로 관리자가 DB를 생성하여 관리하지만 때로는 사용자에게 권한을 부여할 때도 있다.

 

데이터베이스에 대한 접근 권한은 grant 명령어를 사용하여 부여할 수 있다.

형식은 grant all privileges on DB명.* to 사용자_계정@localhost identified by '암호';

 


 

08.2 MariaDB

MariaDB는 MySQL이 ORACLE사에 인수되어 라이선스 정책에 포함된 것에 동조하지 않는 주요 핵심 개발자들이 별도로 개발한 데이터베이스 도구

 

MariaDB를 사용하는 이유는 언제 유료화될지 모른다는 시대적 배경과 오픈 소스의 관계형 데이터베이스 관리시스템 (RDBMS)을 사용할 수 있다는 장점 때문이다. 우분투에서는 MariaDB를 기본 DBMS로 제공하고 있다.

 

08.2.1 MariaDB 설치

MariaDB는 기본적으로 우분투에 설치된 MySQL의 드롭인 대체품이며 많은 스토리지 엔진을 제공하고 있으므로 MySQL에 비해 빠른 속도와 향상된 성능을 사용할 수 있다.

 

sumin@sumin-VMware-Virtual-Platform:~$ sudo apt-get install -y mariadb-server
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
...
(중략)
...
Processing triggers for libc-bin (2.39-0ubuntu8.7) ...
Processing triggers for mariadb-server (1:10.11.14-0ubuntu0.24.04.1) ...

-> sudo 명령어와 함께 apt-get 명령어로 MariaDB 서버 패키지 mariadb-server를 설치한다.

 

sumin@sumin-VMware-Virtual-Platform:~$ ps -ef | grep mysql
mysql       6339       1  0 19:19 ?        00:00:00 /usr/sbin/mariadbd
sumin       6640    3614  0 19:21 pts/0    00:00:00 grep --color=auto mysql

-> MariaDB를 사용하기 위한 명령은 mariadb가 아니고 mysql이므로 주의해야 한다. ps 명령어로 MariaDB 서버의 데몬인 mariadb가 정상적으로 동작하는지 확인한다.

 

08.2.2 MariaDB 접속

sumin@sumin-VMware-Virtual-Platform:~$ sudo ufw allow mysql
규칙이 업데이트됐습니다
규칙이 업데이트됐습니다(v6)
sumin@sumin-VMware-Virtual-Platform:~$ sudo systemctl start mysql
sumin@sumin-VMware-Virtual-Platform:~$ sudo systemctl enable mysql
Synchronizing state of mysql.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable mysql

-> 외부에서 우분투 서버에 접속할 수 있도록 mysql 포트 (3306)를 열어준다.

-> mysql을 실행한다.

-> 우분투가 재시작되더라도 mysql을 자동으로 시작되도록 한다.

 

sumin@sumin-VMware-Virtual-Platform:~$ mysql
ERROR 1698 (28000): Access denied for user 'sumin'@'localhost'
sumin@sumin-VMware-Virtual-Platform:~$ sudo mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 33
Server version: 10.11.14-MariaDB-0ubuntu0.24.04.1 Ubuntu 24.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

-> MariaDB에 접속하기 위해 mysql 명령어만 사용하면 오류 메시지가 출력된다.

-> MariaDB에서 사용하는 root 계정은 리눅스 시스템의 root 계정이 아니라 MariaDB의 root 계정을 의미한다.

-> MariaDB에 접속이 성공적으로 수행되면 프롬프트가 변한다.

'Study > 리눅스' 카테고리의 다른 글

웹 서버 구축 실습  (0) 2026.05.15
데이터베이스 서버 구축 실습  (1) 2026.04.10
네트워크와 인터페이스 개념 정리  (1) 2026.04.09
시그널 개념 정리  (0) 2026.04.05
프로세스 관리 개념 정리 (2)  (1) 2026.04.03