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
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는 동일한 뿌리를 공유하지만 최근 몇 년 동안 갈라져 서로 다른 기능을 제공합니다. 다음 비교는 필요에 맞는 데이터베이스 서버를 선택하는 데 도움이 됩니다:
| 기능 | MySQL | MariaDB |
|---|---|---|
| 라이선스 | 이중 라이선스(GPL 및 독점) | 오픈 소스(GPL) |
| 성능 | 읽기 위주 워크로드에 최적화 | 읽기 및 쓰기 워크로드 모두에서 향상된 성능 |
| 기본 스토리지 엔진 | InnoDB | Aria(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 예제)
- 인증서 생성:
sudo mysql_ssl_rsa_setup --uid=mysql
- 구성에서 활성화:
[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 마스터하기: 데이터베이스 서버를 위한 유연한 스토리지”에서는 다음을 배우게 됩니다:
- 동적 데이터베이스 스토리지용 논리 볼륨을 만들고 관리합니다.
- 다운타임 없이 디스크 크기를 조정합니다.
- 일관된 백업을 위해 스냅샷을 구현합니다.
놓치지 마세요 – 블로그를 팔로우하여 최신 소식을 받아보세요!