MariaDB는 무엇?
MariaDB는 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)이다. MySQL과 동일한 소스 코드를 기반으로 하며, GPL v2 라이선스를 따른다. 오라클 소유의 현재 불확실한 MySQL의 라이선스 상태에 반발하여 만들어졌으며, 배포자는 몬티 프로그램 AB(Monty Program AB)와 저작권을 공유해야 한다. 이것은 MySQL과 높은 호환성을 유지하기 위함이며, MySQL API와 명령에 정확히 매칭하여, 라이브러리 바이너리와 상응함을 제공하여 교체 가능성을 높이고자 함이다. 마리아 DB에는 새로운 저장 엔진인 아리아(Aria)뿐만 아니라, InnoDB를 교체할 수 있는 XtraDB 저장 엔진을 포함하고 있다. 이것은 트랜잭션과 비트랜잭션 엔진 그리고 미래에 나올 MySQL 판에 대응하고자 함일 것이다.
마리아 DB의 주요 개발자는 MySQL과 몬티 프로그램 AB를 설립한 몬티 와이드니어스(Michael Monty Widenius)이다. 그는 이전에 자신의 회사, MySQL AB를 썬 마이크로시스템즈에 10억 달러에 판매를 한 적이 있으며, 마리아 DB는 그의 둘째 딸인 마리아의 이름을 딴 것이다.
apt 저장소 업데이트 후 mariadb-server 패키지 인스톨
- sudo apt update
- sudo apt install mariadb-server
- sudo mysql_secure_installation
설치 전제 조건
Ubuntu 20.04 서버
ufw 구성된 OS 방화벽
1단계 – MariaDB 설치
sudo apt update
sudo apt install mariadb-server
sudo systemctl start mariadb.service
2단계 – MariaDB 구성
MariaDB를 설치하고 시작하지만 암호를 설정하거나 다른 구성을 변경하라는 메시지를 표시하지 않습니다.
기본 구성으로 인해 MariaDB 설치가 안전하지 않기 때문에 mariadb-server 패키지에서 제공하는 스크립트를 사용하여 서버에 대한 액세스를 제한하고 사용하지 않는 계정을 제거합니다.
새로운 MariaDB 설치의 경우 다음 단계는 포함된 보안 스크립트를 실행하는 것입니다.
이 스크립트는 원격 루트 로그인 및 샘플 사용자와 같이 덜 안전한 기본 옵션 중 일부를 변경 합니다.
보안 스크립트를 실행.
sudo mysql_secure_installation
첫 번째 프롬프트는 현재 데이터베이스 루트 암호 를 입력하라는 메시지를 표시 합니다.
아직 설정하지 않았으므로 를 눌러 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, we'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):
다음 프롬프트는 데이터베이스 루트 암호 를 설정할 것인지 묻습니다 .
Ubuntu에서 MariaDB의 루트 계정은 자동화된 시스템 유지 관리와 밀접하게 연결되어 있으므로 해당 계정에 대해 구성된 인증 방법을 변경해서는 안 됩니다. 이렇게 하면 패키지 업데이트로 인해 관리 계정에 대한 액세스가 제거되어 데이터베이스 시스템이 중단될 수 있습니다.
“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
3단계 – (선택 사항) 비밀번호 인증을 사용하는 관리 사용자 생성
MariaDB 10.3을 실행하는 Ubuntu 시스템에서 루트unix_socket MariaDB 사용자는 기본적으로 비밀번호가 아닌 플러그인을 사용하여 인증하도록 설정됩니다 .
이렇게 하면 많은 경우에 보안과 사용성이 향상되지만 외부 프로그램(예: phpMyAdmin) 관리 권한을 허용해야 하는 경우 문제가 복잡해질 수도 있습니다.
서버는 로그 회전, 서버 시작 및 중지와 같은 작업 에 루트 계정을 사용하기 때문에 루트 계정의 인증 세부 정보를 변경하지 않는 것이 가장 좋습니다.
구성 파일 에서 자격 증명을 변경하면 /etc/mysql/debian.cnf처음에는 작동할 수 있지만 패키지 업데이트는 잠재적으로 이러한 변경 사항을 덮어쓸 수 있습니다.
패키지 관리자는 루트 계정 을 수정하는 대신 암호 기반 액세스를 위한 별도의 관리 계정을 만들 것을 권장합니다.
이를 위해 루트 계정 과 동일한 기능을 갖지만 비밀번호 인증을 위해 구성된 admin 이라는 새 계정을 생성합니다.
터미널에서 MariaDB 프롬프트를 엽니다.
sudo mariadb
그런 다음 루트 권한과 암호 기반 액세스 권한 이 있는 새 사용자를 만듭니다 . 기본 설정과 일치하도록 사용자 이름과 암호를 변경해야 합니다.
GRANT ALL ON *.* TO ‘admin’@’localhost’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
현재 세션에서 저장되고 사용 가능한지 확인하기 위해 권한을 플러시합니다.
FLUSH PRIVILEGES;
MariaDB Shell 종료
4단계 – MariaDB 테스트
기본 리포지토리에서 설치하면 MariaDB가 자동으로 실행되기 시작합니다.
mairadb 상태를 확인하십시오.
sudo systemctl status mariadb
Output
● mariadb.service - MariaDB 10.3.22 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-05-12 13:38:18 UTC; 3min 55s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 25914 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 31 (limit: 2345)
Memory: 65.6M
CGroup: /system.slice/mariadb.service
└─25914 /usr/sbin/mysqld
. . .
MairaDB 버전 확인
sudo mysqladmin version
Output
mysqladmin Ver 9.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Server version 10.3.22-MariaDB-1ubuntu1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 4 min 49 sec
Threads: 7 Questions: 467 Slow queries: 0 Opens: 177 Flush tables: 1 Open tables: 31 Queries per second avg: 1.615
비밀번호 인증을 사용하여 별도의 관리 사용자를 구성한 경우 다음을 입력하여 동일한 작업을 수행할 수 있습니다.
mysqladmin -u admin -p version
※ mairadb default port : 3306
결론
MariaDB 관계형 데이터베이스 관리 시스템을 mysql_secure_installation설치하고 함께 설치된 스크립트를 사용하여 보안을 유지했습니다. MariaDB 서버의 기능을 테스트하기 전에 비밀번호 인증을 사용하는 새 관리 사용자를 생성할 수도 있습니다.