웹사이트 검색

Debian 10에 MariaDB를 설치하는 방법


소개

LAMP(Linux, Apache, MySQL, PHP/Python/Perl) 스택. MySQL 및 Debian의 드롭인 교체용으로 제작되었으며 이제 MariaDB 패키지와 함께만 제공됩니다. MySQL 서버 관련 패키지를 설치하려고 하면 대신 호환 가능한 MariaDB 대체 버전을 받게 됩니다.

이 설치 가이드의 짧은 버전은 다음 세 단계로 구성됩니다.

  • 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 10 서버에 MariaDB 버전 10.3을 설치하고 실행 중이며 안전한 초기 구성이 있는지 확인하는 방법을 설명합니다.

전제 조건

이 자습서를 완료하려면 sudo 권한과 방화벽이 있는 루트가 아닌 사용자로 설정된 Debian 10 서버 하나가 필요합니다. 초기 서버 설정 가이드에 따라 설정할 수 있습니다.

1단계 - MariaDB 설치

Debian 10에서 MariaDB 버전 10.3은 기본적으로 APT 패키지 저장소에 포함되어 있습니다. 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\을 표시하십시오.

다음 프롬프트는 데이터베이스 루트 비밀번호를 설정할 것인지 묻습니다. N을 입력한 다음 ENTER를 누르십시오. Debian에서 MariaDB의 루트 계정은 자동화된 시스템 유지 관리와 밀접하게 연결되어 있으므로 해당 계정에 대해 구성된 인증 방법을 변경해서는 안 됩니다. 이렇게 하면 관리 계정에 대한 액세스를 제거하여 패키지 업데이트가 데이터베이스 시스템을 손상시킬 수 있습니다. 나중에 소켓 인증이 사용 사례에 적합하지 않은 경우 암호 액세스를 위한 추가 관리 계정을 선택적으로 설정하는 방법을 다룰 것입니다.

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

3단계 - (선택 사항) 사용자 인증 및 권한 조정

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

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

이 프로세스를 시연하기 위해 루트 계정과 동일한 기능을 갖지만 암호 인증을 위해 구성된 admin이라는 새 계정을 만듭니다. 이렇게 하려면 터미널에서 MariaDB 프롬프트를 엽니다.

  1. sudo mysql

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

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

현재 세션에서 저장되고 사용 가능한지 확인하기 위해 권한을 플러시합니다.

  1. FLUSH PRIVILEGES;

그런 다음 MariaDB 셸을 종료합니다.

  1. exit
Output
Bye

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

4단계 - MariaDB 테스트

기본 리포지토리에서 설치하면 MariaDB가 자동으로 실행되기 시작합니다. 이를 테스트하려면 상태를 확인하십시오.

  1. sudo systemctl status mariadb

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

Output
● mariadb.service - MariaDB 10.3.31 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: Active: active (running) since Mon 2022-03-14 18:33:32 UTC; 2min 2s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 3229 (mysqld) Status: "Taking your SQL requests now..." Tasks: 31 (limit: 4915) Memory: 74.4M CGroup: /system.slice/mariadb.service └─3229 /usr/sbin/mysqld Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: performance_schema Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: Phase 6/7: Checking and u Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: Running 'mysqlcheck' with Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: # Connecting to localhost Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: # Disconnecting from loca Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: Processing databases Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: information_schema Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: performance_schema Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: Phase 7/7: Running 'FLUSH Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: OK

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

추가 확인을 위해 관리 명령을 실행할 수 있는 클라이언트인 mysqladmin 도구를 사용하여 데이터베이스에 연결을 시도할 수 있습니다. 예를 들어 이 명령은 루트로 MariaDB에 연결하고 Unix 소켓을 사용하여 버전을 반환하도록 지시합니다.

  1. sudo mysqladmin version

출력은 다음과 유사해야 합니다.

Output
mysqladmin Ver 9.1 Distrib 10.3.31-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Server version 10.3.31-MariaDB-0+deb10u1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 3 min 6 sec Threads: 6 Questions: 473 Slow queries: 0 Opens: 175 Flush tables: 1 Open tables: 31 Queries per second avg: 2.543

암호 인증을 사용하여 별도의 관리 사용자를 구성한 경우 다음 명령을 실행하여 동일한 작업을 수행할 수 있습니다.

  1. mysqladmin -u admin -p version
Output
Ver 9.1 Distrib 10.3.31-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Server version 10.3.31-MariaDB-0+deb10u1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 7 min 11 sec Threads: 6 Questions: 474 Slow queries: 0 Opens: 175 Flush tables: 1 Open tables: 31 Queries per second avg: 1.099

이 출력은 MariaDB가 실행 중이고 사용자가 성공적으로 인증할 수 있음을 의미합니다.

결론

이 가이드에서는 SQL 서버 역할을 하는 MariaDB를 설치했습니다. 설치 프로세스 중에 서버도 보호했습니다. 선택적으로 패키지 업데이트에서 MariaDB에 대한 관리 액세스를 보장하기 위해 별도의 사용자도 생성했습니다.

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

  • 데이터베이스 가져오기 및 내보내기

MariaDB를 더 큰 애플리케이션 스택에 통합할 수도 있습니다.

  • 데비안 10에 Linux, Nginx, MariaDB, PHP(LEMP 스택)를 설치하는 방법