웹사이트 검색

Debian 11에 MariaDB를 설치하는 방법


소개

LAMP(Linux, Apache, MySQL, PHP/Python/Perl) 스택. 이것은 MySQL을 즉시 대체하기 위한 것입니다.

이 설치 안내서의 짧은 버전은 다음 세 단계로 구성됩니다.

  • apt
  • 를 사용하여 패키지 색인 업데이트\n
  • apt를 사용하여 mariadb-server 패키지를 설치합니다. 패키지는 또한 MariaDB와 상호 작용하기 위한 관련 도구를 가져옵니다.
  • 포함된 mysql_secure_installation 보안 스크립트를 실행하여 서버에 대한 액세스를 제한합니다.

  1. sudo apt update
  2. sudo apt install mariadb-server
  3. sudo mysql_secure_installation

이 튜토리얼에서는 Debian 11 서버에 MariaDB를 설치하고 실행 중이며 안전한 초기 구성이 있는지 확인하는 방법을 설명합니다.

전제 조건

  • 이 튜토리얼을 따르려면 Debian 11을 실행하는 서버가 필요합니다. 이 서버에는 루트가 아닌 관리 사용자와 UFW로 구성된 방화벽이 있어야 합니다. Debian 11용 초기 서버 설정 가이드에 따라 이를 설정합니다.

1단계 - MariaDB 설치

이 글을 쓰는 시점에서 데비안 11의 기본 소프트웨어 리포지토리에는 MariaDB 버전 10.5.15가 포함되어 있습니다. Debian MySQL/MariaDB 패키징 팀에 의해 기본 MySQL 변종으로 표시됩니다.

설치하려면 서버의 패키지 색인을 apt로 업데이트하세요.

  1. sudo apt update

그런 다음 패키지를 설치합니다.

  1. sudo apt install mariadb-server

이 명령은 MariaDB를 설치하지만 암호를 설정하거나 다른 구성을 변경하라는 메시지를 표시하지 않습니다. 기본 구성은 MariaDB 설치를 안전하지 않게 하므로 mariadb-server 패키지가 제공하는 스크립트를 사용하여 서버에 대한 액세스를 제한하고 사용하지 않는 계정을 제거합니다.

2단계 - MariaDB 구성

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

보안 스크립트를 실행합니다.

  1. sudo mysql_secure_installation

이렇게 하면 MariaDB 설치의 보안 옵션을 변경할 수 있는 일련의 프롬프트가 표시됩니다. 첫 번째 프롬프트는 현재 데이터베이스 루트 암호를 입력하라는 메시지를 표시합니다. 아직 설정하지 않았으므로 ENTER를 눌러 "none\을 표시하십시오.

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):

유닉스 소켓 인증으로 전환할 것인지 묻는 메시지가 표시됩니다. 이미 보호된 루트 계정이 있으므로 이 단계를 건너뛸 수 있습니다. 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

다음 프롬프트에서 루트 비밀번호를 변경할 것인지 묻습니다. Debian 11에서 MariaDB의 루트 계정은 자동화된 시스템 유지 관리와 밀접하게 연결되어 있으므로 해당 계정에 대해 구성된 인증 방법을 변경하면 안 됩니다.

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

Output
Change the root password? [Y/n]

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

여기에서 Y를 누른 다음 ENTER를 눌러 모든 후속 질문에 대한 기본값을 수락할 수 있습니다. 이렇게 하면 일부 익명 사용자와 테스트 데이터베이스가 제거되고 원격 루트 로그인이 비활성화되며 MariaDB가 변경 사항을 즉시 구현하도록 이러한 새 규칙이 로드됩니다.

이것으로 MariaDB의 초기 보안 구성이 완료되었습니다. 다음 단계는 선택 사항이지만 암호를 사용하여 MariaDB 서버에 인증하려는 경우 따라야 합니다.

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

MariaDB 10.5를 실행하는 Debian 시스템에서 루트 MariaDB 사용자는 기본적으로 비밀번호가 아닌 unix_socket 플러그인을 사용하여 인증하도록 설정됩니다. 이것은 많은 경우에 더 큰 보안과 유용성을 허용하지만 외부 프로그램(예: phpMyAdmin) 관리 권한을 허용해야 하는 경우 상황을 복잡하게 만들 수도 있습니다.

서버는 로그 회전, 서버 시작 및 중지와 같은 작업에 루트 계정을 사용하므로 루트 계정의 인증 세부 정보를 변경하지 않는 것이 가장 좋습니다. /etc/mysql/debian.cnf 구성 파일에서 자격 증명을 변경하면 처음에는 작동할 수 있지만 패키지 업데이트가 잠재적으로 이러한 변경 사항을 덮어쓸 수 있습니다. 루트 계정을 수정하는 대신 패키지 관리자는 암호 기반 액세스를 위한 별도의 관리 계정을 생성할 것을 권장합니다.

이를 위해 root 계정과 동일한 기능을 갖지만 비밀번호 인증을 위해 구성된 admin이라는 새 계정을 생성합니다. 터미널에서 MariaDB 프롬프트를 엽니다.

  1. sudo mariadb

그런 다음 루트 권한과 암호 기반 액세스 권한을 가진 새 사용자를 만듭니다. 기본 설정과 일치하도록 사용자 이름과 암호를 변경해야 합니다.

  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.15 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 도구를 사용하여 데이터베이스에 연결을 시도할 수 있습니다. 예를 들어 이 명령은 Unix 소켓을 사용하여 루트로 MariaDB에 연결하고 버전을 반환하도록 지시합니다.

  1. sudo mysqladmin version

다음과 유사한 출력이 표시됩니다.

Output
mysqladmin Ver 9.1 Distrib 10.5.15-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Server version 10.5.15-MariaDB-0+deb11u1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /run/mysqld/mysqld.sock Uptime: 4 min 20 sec Threads: 1 Questions: 72 Slow queries: 0 Opens: 32 Open tables: 25 Queries per second avg: 0.276

결론

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

이제 실행 중인 안전한 MariaDB 서버가 있으므로 서버 작업을 위해 수행할 수 있는 다음 단계의 몇 가지 예는 다음과 같습니다.

  • 데이터베이스 가져오기 및 내보내기 방법 알아보기
  • SQL 쿼리 실행 연습
  • MariaDB를 더 큰 애플리케이션 스택에 통합