Database

[MariaDB] Amazon Linux2에 MariaDB 설치와 외부툴에 연동하기

hyunwoome 2022. 7. 3. 16:27

Amazon Linux2 EC2 인스턴스 생성하기

우선 MariaDB를 설치할 Amazon Linux2 기반의 EC2 인스턴스를 생성합니다.

인스턴스에서 인스턴스 시작을 선택합니다.

 

 

해당 EC2의 이름을 정하고 (저는 mariadb-test) 기본적으로 선택되어 있는 freetier의 Amazon Linux2를 선택합니다.

 

 

SSH로 EC2에 접근하기 위해서 키 페어 설정은 필수입니다.

기존 PEM키를 사용하셔도 되고, 없다면 새 키페어 생성을 선택해 반드시 생성해야 합니다.
저는 기존에 생성한 mysql-test라는 이름의 PEM키를 사용하겠습니다.

 

 

외부에서 접근할 수 있도록 약간의 보안 그룹 설정이 필요합니다.

일단 기본으로 두고 생성 후에 설정하도록 합시다.

다 확인했다면 인스턴스 시작을 선택합니다.

 

 

몇 분 후에 우리가 생성한 EC2 인스턴스가 보이면 성공적으로 생성한 것입니다.

 

 

생성한 Amazon Linux2 EC2에 SSH로 접속하기

생성한 인스턴스에 MariaDB를 설치하기 위해서 SSH로 접속해봅시다.

생성한 인스턴스를 선택하고 상단의 연결을 선택합니다.

 

 

 

SSH 클라이언트를 선택하고 아래 퍼블릭 DNS를 사용하여 연결을 통해 로컬 머신에서 SSH로 EC2 인스턴스에 접근합니다.

 

 

SSH를 사용해서 EC2에 접근하기 위해선 PEM키가 있는 디렉터리에서 위 명령어를 사용해야 합니다.

저는 home에서 .ssh 디렉터리에 pem키(mysql-test.pem)를 저장해서. ssh 디렉터리에 가 위 명령어를 사용했습니다.

pem키에 대한 권한 오류가 발생했다면 chmod 400 mysql-test.pem 명령어로 권한을 변경시켜야 합니다.

 

 

아래 그림처럼 인스턴스의 터미널에 접속하게 되면 성공입니다.

 

 

Amazon Linux2에 MariaDB 10버전 이상 설치하기

이제 우리가 생성한 인스턴스를 데이터베이스 서버로 이용하기 위해 MariaDB를 설치해보겠습니다.

설치하기 전 우리가 생성한 인스턴스의 정보를 먼저 살펴보겠습니다. 

아래 명령어를 입력하면 해당 인스턴스의 정보가 출력됩니다.

# 인스턴스 정보
$ cat /etc/*release*
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
Amazon Linux release 2 (Karoo)
cpe:2.3:o:amazon:amazon_linux:2

# CentOS 버전확인
$ rpm -E %{rhel}
7

Amazon Linux2는 Linux의 배포판 중에 하나인 CentOS 7 버전 기반입니다.

혹시나 설치할 때 만날 수 있는 오류들을 해결하기 위해 이점을 숙지하면 좋습니다.

 

Amazon Linux2는 레드햇 계열인 CentOS를 기반으로 만들어진 OS이며, 레드햇 계열은 yum이라는 자동화 패키지 툴을 이용해서 필요한 프로그램을 설치합니다.

 

yum을 이용해서 설치하기 전에 yum의 리포지토리에 우리가 다운받을 mariadb의 정보를 입력하고 저장합니다.

$ sudo vi /etc/yum.repos.d/MariaDB.repo

# MariaDB.repo
# MariaDB 10.5버전 설치시
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64/
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1

파일을 생성하여 입력했으면 다음 명령어를 통해 MariaDB를 설치합니다.

$ sudo yum install -y mariadb mariadb-server

다음처럼 출력되면 설치가 완료되었습니다.

amzn2-core                                      | 3.7 kB     00:00
amzn2extra-docker                               | 3.0 kB     00:00
amzn2extra-kernel-5.10                          | 3.0 kB     00:00
mariadb                                         | 3.4 kB     00:00
(1/2): mariadb/primary_db                         |  73 kB   00:01
(2/2): mariadb/updateinfo                         | 5.7 kB   00:01

...

Dependency Installed:
  MariaDB-common.x86_64 0:10.5.16-1.el7.centos
  boost-program-options.x86_64 0:1.53.0-27.amzn2.0.5
  galera-4.x86_64 0:26.4.11-1.el7.centos
  ncurses-compat-libs.x86_64 0:6.0-8.20170212.amzn2.1.3
  perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.amzn2.0.2
  perl-Compress-Raw-Zlib.x86_64 1:2.061-4.amzn2.0.2
  perl-DBI.x86_64 0:1.627-4.amzn2.0.2
  perl-Data-Dumper.x86_64 0:2.145-3.amzn2.0.2
  perl-IO-Compress.noarch 0:2.061-2.amzn2
  perl-Net-Daemon.noarch 0:0.48-5.amzn2
  perl-PlRPC.noarch 0:0.2020-14.amzn2
  socat.x86_64 0:1.7.3.2-2.amzn2.0.1

Replaced:
  mariadb-libs.x86_64 1:5.5.68-1.amzn2

Complete!

다음 명령어를 사용하면 설치 유무를 파악할 수 있습니다.

$ rpm -qa | grep -i mariadb

MariaDB-compat-10.5.16-1.el7.centos.x86_64
MariaDB-server-10.5.16-1.el7.centos.x86_64
MariaDB-common-10.5.16-1.el7.centos.x86_64
MariaDB-client-10.5.16-1.el7.centos.x86_64

 

MariaDB 실행하기

다음 명령어를 사용해서 MariaDB를 실행시킵니다.

$ sudo systemctl start mariadb

# 실행 확인
$ ps -ef | grep mariadb
mysql     1691     1  0 14:02 ?        00:00:00 /usr/sbin/mariadbd
ec2-user  1708  1186  0 14:02 pts/0    00:00:00 grep --color=auto mariadb

MariaDB가 잘 구동됐습니다.

이제 다음 명령어를 사용해서 MariaDB의 기본적인 설정을 합니다. (루트 패스워드 등)

$ sudo mysql_secure_installation

위 명령어를 사용하면 CLI로 기본적인 설정을 할 수 있습니다.

세부설정은 각 명령어로 검색해 확인할 수 있습니다.

저는 일단 다음과 같이 설정했습니다.

...
Enter current password for root (enter for none):  # 엔터사용
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n]  y
Enabled successfully!
Reloading privilege tables..
 ... Success!
 
 Change the root password? [Y/n] y
New password:  # 루트에 대한 새 비밀번호 입력
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
 
 Remove anonymous users? [Y/n]  y
 ... Success!
 
 Disallow root login remotely? [Y/n] n
 ... skipping.
 
 Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
 
 Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

다음은 서비스에 등록하여 해당 인스턴스가 부팅 시 자동 실행될 수 있도록 합니다.

$ sudo systemctl enable mariadb.service
$ systemctl is-enabled mariadb
enabled

다음 명령어를 사용해서 root권한으로 MariaDB에 접속할 수 있습니다.

비밀번호는 위에서 설정한 root 패스워드를 입력합니다.

$ mysql -u root -p
Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.5.16-MariaDB MariaDB Server

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의 접근 제한 문제 해결

외부에서 EC2 인스턴스의 MariaDB에 접근하려면 몇 가지 설정을 해주어야 합니다.

먼저 보안 그룹을 설정합니다.

 

 

보안 그룹을 선택해서 인바운드 규칙을 편집합니다.

 

 

인바운드 규칙에서 규칙을 추가합니다.

MySQL이나 MariaDB는 기본 설정으로 3306 포트를 사용합니다.

해당 포트번호를 인바운드 규칙에 추가함으로서 외부에서 해당 포트번호에 접근할 수 있도록 합니다.

아래 그림처럼 유형에 MySQL을 추가하고 모든 IP 접근을 허용하도록 했습니다.

규칙을 추가하고 저장을 선택합니다.

 

 

다음으로 MariaDB를 외부에서 접근하기 위한 설정을 해야 합니다.

먼저 SSH로 MariaDB에 접속합니다.

역시 모든 IP 접근 허용을 위해 다음과 같은 명령어를 사용합니다. 

패스워드엔 처음 설정했던 root 패스워드를 입력합니다.

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '패스워드';
Query OK, 0 rows affected (0.001 sec)

flush privileges;
Query OK, 0 rows affected (0.001 sec)

 

외부 데이터베이스 툴에 연동하기

지금까지 EC2 인스턴스 로컬에서 MariaDB에 접속을 했습니다.

이제 우리가 사용하는 실제 컴퓨터에서 인스턴스의 MariaDB를 제어하기 위해 외부 툴과 연동하는 방법을 알아보겠습니다.

저는 JetBrains사의 Datagrip 데이터베이스 툴을 사용했습니다. Datagrip뿐 아니라 DBeaver 등 연동하는 방법은 비슷합니다.

 

Datagrip에서 MariaDB에 연동하기 위해 다음을 선택합니다.

 

그리고 다음 빨간 표시한 부분은 정확히 입력해야 합니다.

1. Name은 원하는 이름으로 작성합니다.

2. Host는 우리가 생성한 인스턴스의 퍼블릭 IPv4주소를 입력합니다.

3. User와 Password는 MariaDB를 설정할 때 지정했던 'root'와 root의 비밀번호를 입력합니다.

4. Test Connection을 선택해서 연결되는지 확인합니다.

5. Test Connection에 통과되면 OK를 누르고 연동을 마무리합니다. 🎉

 

 

참고

http://www.gurubee.net/lecture/3768

https://changun516.tistory.com/55