Ubuntu 22.04에 MariaDB 설치하는 방법

소개

MariaDB는 오픈 소스 관계형 데이터베이스 관리 시스템으로, 인기 있는 LAMP (Linux, Apache, MySQL, PHP/Python/Perl) 스택의 데이터베이스 부분으로서 MySQL의 대안으로 자주 사용됩니다. 이는 MySQL의 대체품으로 사용되도록 의도되었습니다.

이 설치 가이드의 간략한 버전은 다음 세 단계로 구성됩니다:

  • apt를 사용하여 패키지 인덱스를 업데이트합니다
  • apt를 사용하여 mariadb-server 패키지를 설치합니다. 이 패키지는 MariaDB와 상호 작용하기 위한 관련 도구도 가져옵니다
  • 포함된 mysql_secure_installation 보안 스크립트를 실행하여 서버 접근을 제한합니다
  1. sudo apt update
  2. sudo apt install mariadb-server
  3. sudo mysql_secure_installation

이 자습서에서는 Ubuntu 22.04 서버에 MariaDB를 설치하고 실행 중인지 확인하고 안전한 초기 구성이 있는지 설명합니다.

전제 조건

  • 이 튜토리얼을 따르려면 Ubuntu 22.04를 실행 중인 서버가 필요합니다. 이 서버에는 루트 권한이 없는 관리용 사용자와 UFW로 구성된 방화벽이 있어야합니다. 이를 설정하려면 Ubuntu 22.04용 초기 서버 설정 가이드를 따르십시오.

단계 1 — MariaDB 설치

이 문서 작성 시점에서 Ubuntu 22.04의 기본 APT 저장소에는 MariaDB 버전 10.5.12가 포함되어 있습니다.

설치하려면 서버에서 패키지 인덱스를 업데이트하십시오: apt를 사용하여:

  1. sudo apt update

그런 다음 패키지를 설치하십시오:

  1. sudo apt install mariadb-server

이 명령은 MariaDB를 설치하지만 비밀번호를 설정하거나 다른 구성 변경을 요청하지 않습니다. 기본 구성은 MariaDB 설치를 보안 없는 상태로 남겨둡니다. 서버 액세스를 제한하고 사용되지 않는 계정을 제거하기 위해 mariadb-server 패키지가 제공하는 스크립트를 사용할 것입니다.

단계 2 — MariaDB 구성

새 MariaDB 설치에 대해 다음 단계는 포함된 보안 스크립트를 실행하는 것입니다. 이 스크립트는 원격 루트 로그인 및 샘플 사용자와 같은 일부 보안되지 않은 기본 옵션을 변경합니다.

보안 스크립트를 실행하십시오:

  1. sudo mysql_secure_installation

이 스크립트는 일련의 프롬프트를 통해 MariaDB 설치의 보안 옵션을 변경할 수 있는 기회를 제공합니다. 첫 번째 프롬프트에서는 현재 데이터베이스 root 암호를 입력하라고 요청합니다. 아직 설정하지 않았으므로 “없음”을 나타내기 위해 ENTER를 누르세요.

Output
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, you'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none):

다음으로, unix 소켓 인증으로 전환하고 싶은지 물어봅니다. 이미 보호된 root 계정이 있으므로 이 단계를 건너뛸 수 있습니다. n을 입력하고 ENTER를 누르세요.

Output
. . . 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] n

다음 프롬프트에서는 데이터베이스 root 암호를 설정하고 싶은지 물어봅니다. Ubuntu에서 MariaDB의 root 계정은 자동 시스템 유지 관리와 긴밀하게 연결되어 있으므로 해당 계정의 구성된 인증 방법을 변경해서는 안됩니다.

이렇게하면 패키지 업데이트가 관리 계정에 대한 액세스를 제거함으로써 데이터베이스 시스템을 손상시킬 수 있습니다. n을 입력하고 ENTER를 누르세요.

Output
. . . OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] n

나중에 소켓 인증이 사용 사례에 적합하지 않은 경우 비밀번호 액세스를 위한 추가 관리 계정을 설정하는 방법을 설명하겠습니다.

그런 다음 모든 후속 질문에 대한 기본값을 수락하려면 Y를 누르고 ENTER를 누르세요. 이렇게하면 일부 익명 사용자와 테스트 데이터베이스가 제거되고, 원격 root 로그인이 비활성화되며, 이러한 새 규칙이로드되어 MariaDB가 즉시 적용됩니다.

그렇게 하면 MariaDB의 초기 보안 구성이 완료됩니다. 다음 단계는 선택 사항입니다. 그러나 MariaDB 서버에 암호를 사용하여 인증하려면 이 단계를 따르는 것이 좋습니다.

단계 3 – (선택 사항) 암호 인증을 사용하는 관리 사용자 만들기

Ubuntu 시스템에서 MariaDB 10.5를 실행하는 경우 기본적으로 unix_socket 플러그인을 사용하여 root MariaDB 사용자를 인증합니다. 이는 많은 경우에 보다 큰 보안과 사용 편의성을 제공하지만 외부 프로그램(예: phpMyAdmin)에게 관리 권한을 부여해야 하는 경우에는 복잡성을 야기할 수도 있습니다.

서버가 로그 회전 및 서버 시작 및 중지와 같은 작업을 수행하는 데 root 계정을 사용하므로 root 계정의 인증 정보를 변경하는 것이 좋지 않습니다. /etc/mysql/debian.cnf 구성 파일에서 자격 증명을 변경하는 것은 초기에는 작동할 수 있지만 패키지 업데이트가 해당 변경 사항을 덮어쓸 수 있습니다. 패키지 유지 관리자는 root 계정을 수정하는 대신 암호 기반 액세스용 별도의 관리 계정을 만들 것을 권장합니다.

이를 위해 admin이라는 새 계정을 만들 것입니다. 이 계정은 root 계정과 동일한 기능을 가지지만, 암호 인증이 구성될 것입니다. 터미널에서 MariaDB 프롬프트를 열어주세요:

  1. sudo mariadb

그런 다음 root 권한과 암호 기반 액세스를 가진 새 사용자를 만들어주세요. 사용자 이름과 암호를 원하는 대로 변경하세요:

  1. GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

세션에서 권한을 플러시하여 저장되고 현재 세션에서 사용할 수 있도록 해주세요:

  1. FLUSH PRIVILEGES;

이후 MariaDB 셸을 종료해주세요:

  1. exit

마지막으로 MariaDB 설치를 테스트해보겠습니다.

단계 4 — MariaDB 테스트

기본 저장소에서 설치된 경우 MariaDB는 자동으로 실행됩니다. 이를 테스트하려면 상태를 확인하세요.

  1. sudo systemctl status mariadb

다음과 유사한 출력을 받게 될 것입니다:

Output
● mariadb.service - MariaDB 10.5.12 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-03-11 22:01:33 UTC; 14min ago Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ . . .

MariaDB가 실행되지 않은 경우 sudo systemctl start mariadb 명령으로 시작할 수 있습니다.

추가로, 관리 명령을 실행할 수 있는 mysqladmin 도구를 사용하여 데이터베이스에 연결해보세요. 예를 들어, 이 명령은 유닉스 소켓을 사용하여 root로 MariaDB에 연결하고 버전을 반환합니다:

  1. sudo mysqladmin version

이와 유사한 출력을 받게 될 것입니다.

Output
mysqladmin Ver 9.1 Distrib 10.5.12-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Server version 10.5.12-MariaDB-1build1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /run/mysqld/mysqld.sock Uptime: 15 min 53 sec Threads: 1 Questions: 482 Slow queries: 0 Opens: 171 Open tables: 28 Queries per second avg: 0.505

결론

이 가이드에서는 MariaDB 관계형 데이터베이스 관리 시스템을 설치하고, 함께 설치된 mysql_secure_installation 스크립트를 사용하여 보안을 강화했습니다. 또한 MariaDB 서버의 기능을 테스트하기 전에 비밀번호 인증을 사용하는 새로운 관리자 사용자를 생성할 수 있었습니다.

이제 실행 중이고 안전한 MariaDB 서버가 있으므로, 다음 단계로 진행할 수 있는 몇 가지 예제를 살펴보겠습니다:

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-mariadb-on-ubuntu-22-04