17. Ubuntu에서 안전한 데이터베이스 서버 설정: MySQL 대 MariaDB

Ubuntu에서 안전한 데이터베이스 서버 설정는 확장 가능하고 안정적인 애플리케이션을 구축하기 위한 중요한 기반입니다. 동적 웹 애플리케이션을 배포하든 복잡한 엔터프라이즈 워크로드를 관리하든 올바른 데이터베이스 솔루션을 선택하는 것이 중요합니다. MySQL과 MariaDB는 성능, 유연성 및 안정성으로 잘 알려진 가장 인기 있는 오픈 소스 데이터베이스 시스템 중 두 가지입니다.

이 가이드에서는 Ubuntu 서버에 MySQL과 MariaDB를 설치, 구성 및 보호하는 과정을 단계별로 안내합니다. 또한 두 제품의 기능을 비교하여 특정 사용 사례에 가장 적합한 옵션을 판단할 수 있도록 돕습니다. 이러한 단계별 접근 방식을 통해 애플리케이션을 위한 안전하고 견고한 데이터베이스 환경을 설정할 수 있습니다.


이전 문서:

01. Ubuntu Server 소개 – SysOSX: AI & Cloud

02. 첫 번째 Ubuntu Server 설정 방법: 초보자 가이드 – SysOSX: AI & Cloud

03. Ubuntu Server용 Linux 명령줄 마스터하기 – SysOSX: AI & Cloud

04. Ubuntu Server에서 사용자 및 권한 관리: 종합 가이드 – SysOSX: AI & Cloud

05. Ubuntu Server 네트워킹 기본 사항: 종합 가이드 – SysOSX: AI & Cloud

06. Ubuntu Server에 소프트웨어 설치 및 관리: 완전 가이드 – SysOSX: AI & Cloud

07.Ubuntu Server 패치 및 업데이트: 종합 가이드 – SysOSX: AI & Cloud

08. Ubuntu Server 보호: 강화 및 보호를 위한 실용적인 단계 – SysOSX: AI & Cloud

09. Ubuntu 서버 감사 및 로깅

10. Ubuntu Server용 시스템 모니터링 도구: 종합 가이드 – SysOSX: AI & Cloud

11. Ubuntu 서버를 위한 중앙 집중식 로깅: 필독 가이드 – SysOSX: AI & Cloud

12. Ubuntu Server 감사 및 규정 준수: 모범 사례 – SysOSX: AI & Cloud

13. 호스팅 및 웹 애플리케이션을 위한 Ubuntu Server 설정: 최종 가이드 – SysOSX: AI & Cloud

14. 단일 Ubuntu Server에서 여러 웹사이트 호스팅: 유용한 팁 – SysOSX: AI & Cloud

15. Ubuntu Server에서 스토리지 및 디스크 관리: 간단 가이드 – SysOSX: AI & Cloud

16. Ubuntu Server에서 파일 공유 서비스 설정: 완전 가이드 – SysOSX: AI & Cloud



사전 요구 사항

시작하기 전에 다음 사항을 확인하세요:

  • Ubuntu Server: 실행 중인 Ubuntu 인스턴스(20.04 이상 권장).
  • 관리자 액세스: 데이터베이스 서버를 설치하고 구성하려면 다음 권한이 필요합니다: sudo.
  • 인터넷 연결: 패키지 및 업데이트 다운로드에 필요합니다.

MySQL 대 MariaDB: 주요 차이점

MySQL과 MariaDB는 동일한 뿌리를 공유하지만 최근 몇 년 동안 갈라져 서로 다른 기능을 제공합니다. 다음 비교는 필요에 맞는 데이터베이스 서버를 선택하는 데 도움이 됩니다:

기능MySQLMariaDB
라이선스이중 라이선스(GPL 및 독점)오픈 소스(GPL)
성능읽기 위주 워크로드에 최적화읽기 및 쓰기 워크로드 모두에서 향상된 성능
기본 스토리지 엔진InnoDBAria(InnoDB의 대안)
기능엔터프라이즈 기능은 유료 버전에서 사용 가능많은 기능(예: 스레드 풀, JSON 함수)이 오픈 소스입니다
호환성널리 사용되며 주요 플랫폼에서 지원됩니다MySQL과 호환되지만 일부 독점 MySQL 기능을 지원하지 않을 수 있습니다
복제기존 복제Galera Cluster를 지원하는 향상된 복제
커뮤니티 지원대규모 커뮤니티 및 엔터프라이즈 지원 옵션강력한 오픈 소스 커뮤니티 지원

권장 사항:

  • 다음을 선택하세요: MySQL (엔터프라이즈급 기능과 독점 도구와의 호환성이 필요한 경우).
  • 다음을 선택하세요: MariaDB (향상된 기능과 성능을 갖춘 오픈 소스 소프트웨어를 선호하는 경우).

MySQL 또는 MariaDB 설치

1단계: 패키지 리포지토리 업데이트

최신 패키지 버전을 사용하고 있는지 확인하려면 시스템을 업데이트합니다:

sudo apt update && sudo apt upgrade

2단계: MySQL 또는 MariaDB 설치

취향에 따라 MySQL 또는 MariaDB를 설치할 수 있습니다.

MySQL 설치:

sudo apt install mysql-server

MariaDB 설치:

sudo apt install mariadb-server

3단계: 설치 확인

설치가 완료되면 데이터베이스 서버가 실행 중인지 확인합니다:

MySQL의 경우:

sudo systemctl status mysql

MariaDB의 경우:

sudo systemctl status mariadb


데이터베이스 서버 구성

1단계: 기본 구성

성능과 보안을 최적화하려면 구성 파일을 편집합니다.

MySQL의 경우:

sudo nano /etc/mysql/my.cnf

MariaDB의 경우:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

조정할 주요 설정:

  • bind-address: 다음으로 설정합니다: 0.0.0.0 (원격 액세스가 필요한 경우).
  • max_connections: 트래픽이 많은 애플리케이션의 경우 이 값을 늘립니다.

변경한 후 서비스를 다시 시작합니다:

sudo systemctl restart mysql   # For MySQL
sudo systemctl restart mariadb # For MariaDB

2단계: 데이터베이스 서버 테스트

데이터베이스 서버에 로그인하여 작동하는지 확인합니다:

mysql -u root -p


데이터베이스 서버 보호

1단계: 보안 스크립트 실행

기본 제공 보안 스크립트를 사용하여 데이터베이스 서버를 강화합니다.

sudo mysql_secure_installation

프롬프트에 따라 다음을 수행합니다:

  • 강력한 root 암호를 설정합니다.
  • 익명 사용자를 제거합니다.
  • 원격 root 로그인을 비활성화합니다.
  • 테스트 데이터베이스를 제거합니다.

2단계: 방화벽 규칙 구성

다음을 사용하여 데이터베이스 서버에 대한 액세스를 제한합니다: ufw:

sudo ufw allow from <your-ip-address> to any port 3306

다음을 바꿉니다: <your-ip-address> (액세스가 필요한 IP 주소로).

3단계: SSL/TLS 활성화

보안을 강화하려면 SSL/TLS 연결을 활성화합니다. 설정 지침은 다음을 참조하세요: MySQL 설명서 또는 MariaDB 설명서.

(MySQL 예제)

  1. 인증서 생성:
sudo mysql_ssl_rsa_setup --uid=mysql  
  1. 구성에서 활성화:
[mysqld]  
ssl-ca = /var/lib/mysql/ca.pem  
ssl-cert = /var/lib/mysql/server-cert.pem  
ssl-key = /var/lib/mysql/server-key.pem  

4단계: Fail2Ban 설치(선택 사항)

sudo apt install fail2ban  

MySQL/MariaDB용 jail 규칙을 다음에서 구성합니다 /etc/fail2ban/jail.local.


데이터베이스 서버 관리

1단계: 데이터베이스 만들기

애플리케이션용 데이터베이스를 만듭니다:

CREATE DATABASE my_application_db;

2단계: 사용자 만들고 권한 부여

사용자를 만들고 권한을 할당합니다:

CREATE USER 'app_user'@'%' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON my_application_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;

3단계: 성능 모니터링

# Analyze slow queries  
sudo mysqldumpslow -s t /var/log/mysql/mysql-slow.log  

# Use MySQLTuner  
wget https://mysqltuner.pl -O mysqltuner.pl  
perl mysqltuner.pl  

4단계: 백업 및 복원

정기적인 백업은 데이터 안전에 필수적입니다.

백업:

mysqldump -u root -p my_application_db > my_application_db.sql

복원:

mysql -u root -p my_application_db < my_application_db.sql

자동 백업(Cron 작업)

# Daily backup at 2 AM  
0 2 * * * /usr/bin/mysqldump -u root -p PASSWORD app_db > /backups/app_db_$(date +\%F).sql  

결론

MySQL과 MariaDB는 모두 Ubuntu에서 데이터베이스 서버를 설정하기 위한 훌륭한 선택입니다. MySQL은 엔터프라이즈급 기능으로 잘 알려져 있고, MariaDB는 오픈 소스 접근 방식과 성능 향상으로 두드러집니다. 이 가이드를 따르면 데이터베이스 서버를 효과적으로 설치, 구성, 보호 및 관리할 수 있습니다.

다음 소식:
다음 가이드 “Ubuntu에서 LVM 마스터하기: 데이터베이스 서버를 위한 유연한 스토리지”에서는 다음을 배우게 됩니다:

  • 동적 데이터베이스 스토리지용 논리 볼륨을 만들고 관리합니다.
  • 다운타임 없이 디스크 크기를 조정합니다.
  • 일관된 백업을 위해 스냅샷을 구현합니다.

놓치지 마세요 – 블로그를 팔로우하여 최신 소식을 받아보세요!

댓글 남기기