LEMP스택 설치 -우분투 서버에 MariaDB 데이터베이스 설치하기 (마리아디비)

6

 LEMP 스택 설치방법 연재작 시리즈의 마지막 글로써, DB(데이터베이스) 서버프로그램으로 MariaDB를 설치하는 방법을 알아보겠습니다.

 

MariaDB (마리아디비)는 mySQL과 호환이 잘되는 데이터베이스로 요즘 인기인 데이터베이스 애플리케이션입니다.  신규로 LAMP 또는 LEMP 스택구성할 때 데이타베이스를 mySQL로 할지 MariaDB로 할지 고민이되는 사람은 얼마 없을 것입니다. 단지 기존시스템에서 전환할때 MariaDB로 전환한다면 호환성을 잘 알아봐야겠죠. 

 

참고

서버접속에대한 사전지식이 필요하다면 아래 링크에서 내용을 자세히 읽어보시기 바랍니다.

CLI 명령어 입력중 $과 #기호 구분, 명령어 앞에 붙는 sudo 가 궁금하다면 아래 블로그글을 읽어보세요.

 

 

apt: 현재 우분투가 가진 mariadb-server 설치정보 알아보기

최신버전 MariaDB 설치하기위해서 apt 프로그램을 이용해서 설치할 겁니다.  apt는 패키지를 설치할 때 어디에서 받아올지 리스트목록으로 관리하는데요. 우분투 16.04에있는 기본 마리아디비 설치정보는 10.0 버전입니다. 이글을 쓰고 있는 시점에서는 10.3버전이 최신 버전이네요. 그래서 10.3 에대한 apt의 설치정보 리스트를 먼저 업데이트해야합니다.

아래 명령어를 통해서 apt의 리스트 중에 MariaDB 패키지에대한 설치정보를 알 수 있습니다.

sudo apt-cache policy mariadb-server

현재 mariadb-server 패키지 설치정보가 10.0 버전이다

위 그림처럼 설치(Installed)는 현재 none 이라서 시스템에 설치된 마리아디비는 없는 걸로 나오고 설치 후보자(Candidate)는 10.0.34로 나옵니다. 그리고 그 아래로 버전테이블이 나오네요. 이대로 그냥 설치하면 10.0 버전이 설치되니 이 것을 먼저 업데이트 해야 최신버전으로 설치할 수 있습니다.

 

apt 레파지토리 리스트 추가: MariaDB 최신버전 설치정보 업데이트하기

이글을 작성중인 현재는 10.3이 최신이지만 여러분들이 이 글을 보고있는 미래 시점에서는 버전이 더 높을 겁니다. 그럼 그 시점에서 최신버전은 어디에서 알 수 있을까요? 바로 MariaDB 공식사이트입니다. 공식사이트에서 레파지토리(저장소)를 찾을 줄 알아야겠죠? 

위 링크에 접속해서 아래처럼 차례대로 OS 종류(우분투) , OS 버전(16.04 LTS) 을 선택하고 3번째에서는 자신이 원하는 MariaDB 버전을 선택, 4번째에서는 자신가 가까운 서버위치를 선택해주고나면 아래쪽에 apt 업데이트 방법이 안내가 됩니다.

마리아디비 공식 사이트의 다운로드 저장소 선택 페이지

 

위 그림에서 업데이트 방법에 안내된대로 4개의 명령어를 먼저 입력해봅시다.

$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
$ sudo add-apt-repository 'deb [arch=amd64,arm64,i386,ppc64el] https://ftp.harukasan.org/mariadb/repo/10.3/ubuntu xenial main'
$ sudo apt update

 

마리아디비 10.3 정보 임포팅 명령어 3개가 입력됨
레파지토리 정보 임포팅

sudo apt update 실행

 

이제 apt 리스트에 레파지토리가 잘 업데이트되었나 확인해봐야겠죠? 리스트를 재확인해봅시다

sudo apt-cache policy mariadb-server

그러면 아래 그림처럼 Candidate가 마리아디비 최신버전인 10.3.8 버전이라고 나옵니다. 

apt의 설치후보자(Candidate)가 10.3.8 이라고 나옴

 

MariaDB 최신버전 설치방법

위 결과에서 보면 목록중에 아래에는 이전에 있던 10.0 버전에대한 설치정보도 그대로 있습니다.  이렇게 여러버전에대한 설치정보가 있을때 Candidate가 아닌 다른 버전을 설치하려면 버전을 명시해서 설치하면 될것입니다. 하지만 저는 Candidate에 명시된 버전을 설치하면 되므로 아래명령어를 통해서 곧바로 설치를 시작할 수 있습니다.

sudo apt install mariadb-server

 

마리아디비 설치 시작 명령어를 입력했다

 

계속 진행할지 묻는 질문에 Y를 입력했다

 

위처럼 Do you want to continue? 질문이 나오면 계속 진행하겠다고 Y를 누르고 엔터키를 눌러 진행합니다. 그러면 아래 그림처럼 MariaDB의 root 사용자 비밀번호를 설정하라고 나옵니다. 특수문자, 대소문자, 숫자 조합으로 복잡한 비밀번호를 입력해줍시다.

중요: DB의 root 사용자는 리눅스컴퓨터 사용자 root와는 다릅니다.

DB의 root 유저 비밀번호 설정하기 화면

 

이때 설정하는 root의 비밀번호는 가장 중요한 비번이므로 잊지않도록 자신만 아는 곳에 써놓으세요. 회사 사무실이라면 키보드 뒷면에 적으시겠죠. 아래처럼 비번 재확인이 나오면 같은 비번을 또 입력해줍니다.

DB의 root 유저 비밀번호 설정하기 재확인 입력화면
재확인: 같은 비번을 입력해주세요
마리아디비 설치 완료
설치 완료!

 

설치가 완료되면 동시에 MariaDB 가 실행되며, 재부팅시에도 자동 시작되도록 설정됩니다. 서비스 현재상태를 확인하는 명령어를 이용해 현지설치된 MariaDB의 버전은 무엇인지, 잘 돌고있는지 확인해봅시다.

service mysql status
MariaDB 가 active (running) 상태
MariaDB running!

위 내용은 내용이 길어서 방향키로 내려볼 수 있는데 QControl+C 를 입력하여  빠져나갑시다.

이렇게 설치가 완료되었는데요. 이제 PHP 와의 연동모듈을 설치하고 데이터베이스 생성시 기본언어셋을 설정하는 중요한 작업을 추가로 해줘야겠습니다.

 

PHP-FPM 에 DB 연동을 위한 php-mysql 모듈설치

php7.2-mysql 모듈이 설치되어있는지 apt 리스트에서 확인해봅시다. 

sudo apt-cache policy php7.2-mysql

아래화면 처럼 Installed: 버전번호 가 나오면 이미 설치되어있는 것입니다.

Installed: 설치됨

 

위 화면에서 Installed: (none) 이라고 나온다면 아래명령어로 설치해주세요.

sudo apt-get install php7.2-mysql

 

MariaDB 데이터베이스 기본 언어셋으로 UTF8 설정하기

데이터베이스의 기본 언어셋은 중요한 문제입니다. 우리는 컴퓨터를 사용하면서 한글이나 이모티콘글자가 깨져보이거나 네모표시로 표현되는 걸 가끔 마주하곤 하는데요. 컴퓨터의 언어셋을 유니코드(UTF)로 설정하면 해결되는 문제죠. 

마라이디비 데이터베이스의 기본 언어셋은 설치했을 때 latin1 (라틴문자 언어셋)으로 되어있습니다. 이러면 나중에 DB관련 SQL문을 작성할 때 일일히 언어셋을 바꿔야합니다. 특히 한글을 자주쓰는 우리는 더욱 그렇죠. 

그래서 테이블생성시 언어셋 기본값이 utf8이되도록해서 그런 문제가 생기지 않게 해봅시다. 그 보다는 모바일에서 사용하는 이모지(emoji)까지 표현가능한 utf8mb4 언어셋으로 지정하는게 좋겠네요.

 

이런 설정을 하기위해서는 /etc/mysql/conf.d/mariadb.cnf 파일을 수정하면되는데 이 파일이 현재는 없을 것입니다. 아래 그림은 /etc/mysql/conf.d 폴더를 살펴본 모습입니다. 파일이 단 하나 뿐이군요.

/etc/mysql/conf.d 폴더안에 mariadb.cnf 파일이 없음
FTP 프로그램에서 살펴본모습.

저와는 다르게 저곳에 이미 mariadb.cnf 파일이 있다면 해당파일을 수정하시면 되는데요. 저는 없으므로 새로 만들고 설정내용을 추가하겠습니다.

그런데 /etc/mysql/conf.d/ 폴더는 root 계정 권한으로만 수정가능합니다. 그러므로 CLI에서 아래처럼 root 명령어 sudo를 써서, mariadb.cnf 파일을 만들고 nano 편집기로 여는 아래 두개 명령어를 실행하겠습니다.

$ sudo touch /etc/mysql/conf.d/mariadb.cnf
$ sudo nano /etc/mysql/conf.d/mariadb.cnf

 

nano 편집기로 열었을때 기존파일이 있었다면 그 내용이 나올 겁니다. 그럴땐  control + k 키를 눌러 한줄씩 빠르게 삭제하고 비운뒤에 따라하시면 됩니다. 아래 내용을 #기호도 포함해서 복사해서 그대로 붙여넣으세요. 

# MariaDB-specific config file.
# Read by /etc/mysql/my.cnf

[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
default-character-set = utf8mb4

[mysqld]
#
# * Character sets
#
# Default is Latin1, if you need UTF-8 set all this (also in client section)
#
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci

참고: 위 내용에서 앞에 #이 붙은건 주석이므로 작성하지 않아도 무관합니다.

그러면 아래 그림처럼 될겁니다.

nano 편집기로  mariadb.cnf 파일에 utf8mb4 세팅을 위한 내용을 작성했다
utf8mb4 세팅을 위한 mariadb.cnf 파일내용

 

이제 저장하고 nano 편집기를 빠져나가기위해서 control + x  를 누르고  y -> 엔터를 누르면 내용을 저장하고 빠져나오게 됩니다.

ls 명령어로 폴더안을 다시 살펴보면 해당파일이 있을 겁니다.

 

이제 MariaDB를 재시작해줍니다.

sudo service mysql restart

 

우분투 시스템 재부팅

이제 exit 명령어로 CLI 접속을 종료하고 서버에 다시 접속해보면 시작할때 ***System restart required *** 라는 메시지가 나올텐데요. 컴퓨터를 재부팅하란 소립니다.

서버 접속시 재부팅 요구 메시지

아래 명령어를 사용해 우분투 서버컴퓨터를 재부팅해줍시다. 재부팅이 시작되면 다시한번 CLI 서버접속 연결이 끊기게 됩니다.

sudo shutdown now -r

다음단계

축하합니다. 여기까지 LEMP 스택(리눅스에 nginx, MariaDB, PHP)을 설치하는 과정 시리즈 연재를 마칩니다. DB작업이 필요한 PHP 웹서버 프로그래밍을 위한 서버가 마련되었네요. 저 처럼 아마존 라이트세일에서 설치했다면 스냅샷으로 백업해두기 아주 좋은 시점이겠죠.  그러면 다음에 LEMP 스택이 필요할때 그 스냅샷으로 곧바로 새로운 LEMP스택 인스턴스를 생성할 수 있을 테니까요.

 

그리고 LEMP스택 구성과는 상관없지만, 이제까지 준비한 LEMP스택의 DB 테이블을 편히 볼수 있는 웹애플리케이션 phpMyAdmin을 설치하는 방법을 알아보는건 어떨까요? 이걸 설치하면 PHP 개발할 때 좀더 편해질거예요.

 

이후 추천하는 다른 작업들은 다음과 같은 것들이 있네요:

 

 

 이제 코딩하려는 목적에 따라 자신의 DB와 테이블을 생성하시고 사용하시면 됩니다.이렇게 나만의 리눅스 서버가 마련되었으니 다음으로 할 수 있는 작업은 여러가지를 해볼 수 있겠습니다.

등등 무한한 가능성이 펼쳐져있겠죠.

6 댓글

  1. MariaDB-specific config file.

    Read by /etc/mysql/my.cnf

    [client]

    Default is Latin1, if you need UTF-8 set this (also in server section)

    default-character-set = utf8mb4

    [mysqld]
    #

    * Character sets

    #

    Default is Latin1, if you need UTF-8 set all this (also in client section)

    #
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    character_set_server = utf8mb4
    collation_server = utf8mb4_unicode_ci

    에서 마지막 설정을 두번 반복한 것은 따로 의미가 있는 건지 궁금합니다.

    • 유심히 보시면 알겠지만 하이픈 -과 언더스코어 _로 서로 다릅니다. 정확히는 저도 모르고 문서에도 명확하진 않는데, 보통 하이픈은 커맨드라인에서 쓰이고 언더스코어는 DB에 기록될 때 쓰인다고 하는 군요. 둘 중 한가지만 써도 특별히 문제 없다고는 합니다.

    • 이게 ssh 쉘을 이용해서 마리아 db를 설치하면 unix설정과 동일하게 되서 비번 설정창이 안나오는데요. 따로 설정을 해줘야합니다. 마리아db설치가 끝난 상태에서 sudo mysql_secure_installation 입력 엔터 그러면 물음이 나옵니다. Enter current password for root (enter for none): 그냥 엔터 Switch to unix_socket authentication [Y/n] n선택 엔터 Change the root password? [Y/n] y엔터 그럼 비번 설정이 나오구요. 비번을 입력하고 엔터 다시 입력 엔터 Remove anonymous users? y Disallow root login remotely? n Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y 이렇게 하면 설정이 완료됩니다.

댓글은 익명이나 SNS, wordpress.com 로그인 지원). 마크다운 문법 사용가능(Shift+~ 키로 특정문구 혹은 위아래 ~~~으로감싸서 여러줄을 코드블락으로 작성)