본문 바로가기
SW 개발/Data 분석 (RDB, NoSQL, Dataframe)

우분투 20.04에서 MariaDB 설치 및 기본 동작 확인 명령어

by Kibua20 2021. 6. 6.

관계형 데이터 베이스의 대표 주자는 Oracle입니다.  관계형 데이터베이스 업체는 오라클, IBM, 마이크로소프트 순이고,  Oracle의 DBMS의 가장 높으며,  오픈 소스 진영의 DBMS는 MySQL, PostgreSQL, SQLite을 많이 사용하고 있습니다. 최근에 MySQL이 오라클 인수된 영향으로 기능 개선에 다소 미흡한 부분이 있고, 라이선스가 모호한 점이 있어 최근에는 MariaDB를 많이 사용합니다.  MariaDB는 MySQL를 소스를 기반으로 성능 개선한 DBMS라 기능이 호환되며, 성능 개선 내용이 반영되어 있다고 합니다.   아직까지는 MySQL 을 사용하는 비율이 높지만, MariaDB는 최근 사용율이 급격하게 증가하고 있습니다. 

관계형 데이터 베이스란 (출처: Oracle)

관계형 데이터베이스는 테이블에 데이터를 직관적이고 간단하게 표현하는 방법인 관계형 모델을 기반으로 합니다. 관계형 데이터베이스에서 테이블의 각 행은 키 라는 고유 ID가 포함된 레코드입니다. 테이블의 열에는 데이터의 속성이 들어 있으며, 각 레코드에는 일반적으로 각 속성에 대한 값이 있으므로 데이터 포인트 간의 관계를 손쉽게 설정할 수 있다. 

→ 한마디로 "Table"로 구성된 Database입니다.  참고로, JSON과 같은 형태의 DB를 NoSQL 이라고 합니다. 

 

개발자 입장에서는 MySQL이나 MariaDB 중 하나만 잘 다룰 수 있다면 Relatinal DB 처리는 별다른 어려움이 없을 것으로 예상되고, AWS(Auroa), Google Cloud, MS Azure 에서 지원하는 관계형 DB도 쉽게 사용할 수 있을 것으로 보입니다. 본 포스팅에서는 우분투에서 MariaDB를 설치하고 정상 동작 여부를 확인하는 간단한 명령어를 설명 예정입니다. 

 

 

※ 2021년 5월 기준 DB Engine 순위 및 추세 (출처: https://db-engines.com/en/ranking)

2021년 5월 기준 DB Engine 순위

 

MySQL과 MariaDB 순위

 

우분투 20.04에서 MariaDB 설치 순서 

  1. 최신 버전을 설치하기 위해서 MariaDB의 apt repository 추가 
  2. mariadb-server 설치:  DBMS 서버 설치 (필수)
  3. mariadb-client 설치: DBMS 가 정상 동작하는지 확인하기 위해서 설치 
  4. mqsql_secure_installation: root (admin) 계정과 패스워드 설정
  5. mariadb 실행 및 정상 동작 확인 

MariaDB의 apt repository를 확인하기 위해서는 https://downloads.mariadb.org/mariadb/repositories에서 repository추가 명령어를 확인할 수 있습니다. ① Linux 배포판을 선택하고 (제 경우에는 우분투를 선택), ② 현재 사용하고 있는 버전을 확인 (20.04), ③ 미러 사이트를 확인합니다. 

 

최신 버전을 설치하기 위해서 MariaDB의 apt repository 추가

 

현재 시점(21년 5월)에서는 MariaDB 10.5 버전을 설치하며, 아래 명령어를 터미널에 입력합니다. 에러가 발생하는 경우 같은 명령어를 다시 입력하면 에러 없이 정상 진행 가능합니다.  (※ MariaDB Mirror 사이트가 다소 느린 것 같습니다.)

 

# MariaDB Repository 추가 

$ sudo apt-get install software-properties-common

$ sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'

$ sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirror.yongbok.net/mariadb/repo/10.5/ubuntu focal main'

 

# MariaDB server 설치 

$ sudo apt update; 

$ sudo apt install mariadb-server 

MariaDB server 설치

 

# MariaDB client 설치 

sudo apt install mariadb-client  

MariaDB client 설치

# MariaDB secure 설정 

$ sudo mysql_secure_installation

 

Secure 설정은 Unix socket authentification 활성화, root password 설정, anonymous users 활성화 여부, 원격으로 root login 여부, test DB 삭제 여부를 입력할 수 있습니다. 대부분은 기본 값으로 설정해도 무방하니 Default 값으로 설정하고, 추후 SQL 명령어나 환경 파일을 통해서 변경 가능합니다. 

MariaDB secure 설정

 

MariaDB 기본 동작 확인

MariaDB의 기본 동작을 확인하기 위해서 터미널에서 mysql (또는 mariadb)를 실행하고 MariaDB console에서 명령어를 확인합니다.  Root 계정의 패스워드를 설정하지 않아서 실제 계정의 권한을 그대로 MariaDB에서 동일하게 인식됩니다.  권한 문제를  피하기 위해서 터미널에서 sudo 계정을 실행합니다.  MariaDB에서 명령어 끝에 ; (세미콜론)을 붙이고 엔터치면 실행 결과를 출력합니다. 

 

$ sudo mysql  또는   $ sudo mariadb

 

Maria DB 콘솔에서 명령어를 실행합니다. 

 

# 현재 database를 확인합니다. 

MariaDB [(none)]> show databases;

 

# 설치된 Maria DB 버전을 확인합니다. 

MariaDB [(none)]> select version();

 

# db 선택

MariaDB [(none)]> use mysql;

 

# mysql db 안에 있는 tables을 보여 달라 

MariaDB [(mysql)]> show tables;

 

# sql 구문 사용  

MariaDB [(mysql)]> select * from   OOO   where ****  ; 

MariaDB 기본 동작 확인

 

SQL에서 Table, Database (or Schema), Database Server에 대한 설명을 아래 동영상을 참고해주세요. Table은 Row (or record)와 Column으로 구성되어 있습니다. 각 Column은 데이터의 이름과 Data type이 정의되어 있고, Row는 각각의 실제 값입니다.

 

Table의 집합이 Database이고, Database 에서는 여러 Table로 구성되어 있으면 Key 값으로 연결할 수 있습니다.  Database Server에서는 복수의 Database의 묶음을 관리할 수 있으며 각 Database별 권한을 지정할 수도 있습니다. 

 

MariaDB (또는 MySQL) 콘솔에서는 Database를 지정(USD DATABASES)해야 해당 Database에 포함된 Table을 확인할 숭 수 있습니다. 

 

  • Table: Row 와 Column으로 구성
  • Database:  Table의 묶음
  • Database Server: Database의 묶음
출처: 생활코딩 (https://www.youtube.com/watch?v=x06B6UkitcM&list=PLuHgQVnccGMCgrP_9HL3dAcvdt8qOZxjW&index=11)

 

원격 Client 접속을 위한 MaridDB 설정 방법

우분투에서 설치하는 MariaDB는 기본적으로 LocalHost (127.0.0.1)에서만 접속가능하도록 설정되어 있습니다. 인터넷을 통해서는 아래와 같이 설정 파일에 대한 수정이 필요합니다.  상세 내용은 링크를 확인해주세요. 

 

  • Configuration 파일에서 skip-networking 과 skip bind-address 수정 
  • 방화벽 해제 (서버 또는 클라우드 회사마다 다름)

 

mysqld에 대한 default option 확인:

$ mysqld --print-defaults

 

default 옵션을 보면 --bind-address가 127.0.01로 설정되어 있음을 확인할 수 있고, /etc/mysql/mariadb.conf.d/50-server.cnf 파일에서 설정되어 있습니다. 

 

MariaDB 의 설정 파일은 아래 순서로 Parsing되고, 각 시스템에 맞는 파일에서 수정하면 적용할 수 있습니다. 

# The MariaDB/MySQL tools read configuration files in the following order:
# 0. "/etc/mysql/my.cnf" symlinks to this file, reason why all the rest is read.
# 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
# 4. "~/.my.cnf" to set user-specific options.

 

설정을 변경하기 위해서 /etc/mysql/my.cnf 파일에 아래와 같이 수정합니다. 

 

$ sudo vi /etc/mysql/my.cnf 

# /etc/mysql/my.cnf  파일 수정
[mysqld]
skip-networking=0
skip-bind-address

 

mysql 서비스를 restart하고 다시 default 값을 확인합니다. 

$ sudo systemctl restart mysql

$ mysqld --print-defaults

 

MariaDB는 설정을 변경하지 않았다면 기본 값으로 Port 3306을 사용합니다.  외부 인터넷에 MariaDB 포트 (3306)을 열어야 합니다.  iptables 명령어로 포트를 허용하도록 설정을 변경할 수 있습니다. 오라클과 구글 클라우드의 방화벽을 허용하는 방법은 아래 포스팅을 확인해주세요. 

 

[Cloud/Oracle Cloud] - Oracle Cloud 방화벽 설정 (http/https 특정 포트 열기)

[Cloud/Google Cloud Platform] - GCP(Google Cloud) 방화벽 설정: 프로토콜과 포트를 사용 허용 또는 거부하기

 

관련 글:

[SW 개발/Data 분석 (RDB, NoSQL, Dataframe)] - CSV 파일에서 MariaDB(또는 MySQL)로 데이터 가져오는 방법

[SW 개발/Python] - Jupyter Notebook의 업그레이드: Jupyter Lab 설치 및 extension 사용법

[SW 개발/Python] - 우분투 20.04에서 Jupyter Notebook 사용법: Web browser에서 Python 개발 환경 구축

[SW 개발/REST API] - 자주 사용하는 curl 명령어 옵션과 예제

[개발환경/Tips] - rclone을 활용하여 Microsoft OneDrive를 네트위크 드라이브로 마운트하는 방법

[SW 개발/Android] - Python BeautifulSoup으로 만든 Apk download 자동화 (Sample code)

[SW 개발/Python] - Python: xmltodict를 활용하여 XML를 JSON으로 변환하는 방법

[Cloud/Google Cloud Platform] - IP Address CIDR 표현법과 사용 예

[Cloud/Oracle Cloud] - Oracle Cloud 고정 IP (공인 IP) 할당하기

[Cloud/Google Cloud Platform] - GCP(Google Cloud) 하드 디스크 추가하기 (영구 디스크는 30GB까지 무료)

[개발환경/Web Server] - 우분투 20.04에서 Flask를 서비스 등록: 부팅 시 자동 실행

[개발환경/Web Server] - Website 전체 백업 방법: HTTrack (티스토리 백업에 활용)

[Cloud/Google Cloud Platform] - Google Cloud Platform을 활용하여 평생 '무료' PC 만들기

 

 




댓글2

  • 황송하나이다 2021.08.17 01:03

    좋은 정보 정말 감사합니다.
    얻어 쓰는 주제에 염치없지만, 한가지 편의적으로 아쉬운 부분이 하나 있다면, 본문에 명령어 일일히 치지 말라고 복사하기 기능 살려주신거 같은데, 출처까지 자동으로 긁혀서 ... 험험... 살짝 아쉬움이 있었습니다. ^^
    답글

  • kjs 2022.07.20 00:01

    정보 및 정리 고맙습니다!
    답글