Ubuntu 20.04 가상 머신에 MariaDB와 phpMyAdmin 설치하고 외부 접속하기

이번 포스팅에서는 Ubuntu 20.04 LTS가 설치된 가상 머신에 MariaDB와 phpMyAdmin을 설치하고, 외부에서도 접속할 수 있도록 설정하는 전체 과정을 단계별로 알아보겠습니다.

 

특히 로컬 개발 환경을 만들 때 많은 분들이 어려워하는 가상 머신 네트워크 설정과 외부 접속 권한 문제를 중점적으로 다루어, 누구나 쉽게 따라 할 수 있도록 안내하겠습니다.

 

1. MariaDB 데이터베이스 서버 설치 및 기본 설정

가장 먼저 데이터베이스 서버인 MariaDB를 설치하고 기본적인 설정을 진행하겠습니다.

 

1-1. MariaDB 서버 설치

sudo apt update
sudo apt install mariadb-server -y

먼저 위 명령어를 터미널에 순서대로 입력하여 시스템 패키지를 최신 상태로 업데이트하고 MariaDB 서버를 설치합니다.

 

sudo mysql_secure_installation

설치가 완료되었다면, 다음으로 위 명령어를 실행하여 초기 보안 설정을 진행합니다. 이는 운영 환경에서 매우 중요한 과정입니다.

보안 설정 과정에서는 다음과 같이 설정하는 것을 권장합니다.

  • 기존 root 비밀번호: 처음 설치 시에는 없으므로 Enter 키를 누릅니다.
  • 새로운 root 비밀번호 설정: 보안을 위해 강력한 비밀번호를 설정해주세요.
  • 익명 사용자 삭제: Y를 선택하여 보안 취약점을 제거합니다.
  • 원격 root 접속 차단: N을 선택하여 외부 접속을 허용합니다. (추후 별도 계정으로 관리)
  • 테스트 데이터베이스 삭제: Y를 선택하여 불필요한 데이터베이스를 정리합니다.
  • 권한 테이블 다시 로드: Y를 선택하여 변경된 설정을 즉시 적용합니다.

 

1-2. 외부 접속을 위한 MariaDB 설정 변경

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

MariaDB의 외부 접속을 허용하기 위해, 위 명령어로 설정 파일을 엽니다.

 

# 기존 설정: bind-address = 127.0.0.1
bind-address = 0.0.0.0

파일이 열리면 bind-address 항목을 찾아 다음과 같이 127.0.0.10.0.0.0으로 수정합니다. 이렇게 하면 모든 IP 주소에서의 접속을 허용하게 됩니다.

 

sudo systemctl restart mariadb

설정 파일을 저장한 후, 위 명령어로 MariaDB 서비스를 재시작하여 변경된 내용을 적용합니다.

 

sudo ufw allow 3306/tcp

마지막으로, 방화벽에서 MariaDB가 사용하는 기본 포트인 3306번을 허용해 줍니다.

 

1-3. 외부 접속용 사용자 계정 생성하기

sudo mysql -u root -p

보안을 위해 외부 접속 전용 관리자 계정을 생성하겠습니다. 위 명령어를 입력하여 MariaDB 콘솔에 접속합니다.

 

CREATE USER 'admin'@'%' IDENTIFIED BY '강력한_비밀번호';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

MariaDB 콘솔에서 위 SQL 쿼리를 실행하여 admin이라는 이름의 새로운 사용자를 생성하고 모든 권한을 부여합니다. '강력한_비밀번호' 부분은 반드시 안전한 비밀번호로 변경해주세요.

 

2. phpMyAdmin 웹 관리 도구 설치

이제 데이터베이스를 웹 환경에서 편리하게 관리할 수 있도록 도와주는 phpMyAdmin을 설치해 보겠습니다.

 

2-1. Apache 웹 서버 설치

sudo apt install apache2 -y
sudo systemctl enable apache2
sudo systemctl start apache2

phpMyAdmin은 웹 기반 도구이므로, 먼저 위 명령어를 통해 Apache 웹 서버를 설치하고 활성화합니다.

 

2-2. phpMyAdmin 설치 및 연동

sudo apt install phpmyadmin -y

다음으로 위 명령어를 실행하여 phpMyAdmin을 설치합니다.

설치 과정에서 나타나는 몇 가지 선택 항목은 아래와 같이 설정해주세요.

  • 웹 서버 선택: Apache2를 선택합니다. (스페이스바로 선택 후 Enter)
  • 데이터베이스 설정: Yes를 선택하여 phpMyAdmin용 데이터베이스를 설정합니다.
  • MySQL 관리자 비밀번호: 앞서 설정했던 MariaDB의 root 계정 비밀번호를 입력합니다.

 

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

설치가 끝나면, 위 명령어로 심볼릭 링크를 생성하여 웹 브라우저에서 phpMyAdmin에 접근할 수 있도록 설정합니다.

 

sudo systemctl restart apache2

마지막으로 Apache 서버를 재시작하여 모든 설정을 적용합니다.

 

3. 방화벽 설정

3-1. UFW 방화벽 포트 허용

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3306/tcp
sudo ufw reload

외부에서 웹 서버(HTTP/HTTPS)와 데이터베이스 서버(MySQL)에 접속할 수 있도록, 위 명령어를 실행하여 방화벽에서 관련 포트를 열어줍니다.

 

sudo ufw status

위 명령어를 통해 방화벽 상태를 확인하여 포트가 잘 열렸는지 검토할 수 있습니다.

 

4. 가상 머신 네트워크 설정 (외부 접속을 위한 핵심)

가상 머신 환경에서 외부 접속을 하려면, 가상 머신의 네트워크 설정을 올바르게 구성하는 것이 매우 중요합니다.

 

4-1. 네트워크 어댑터 설정 변경

외부에서 가상 머신에 직접 접근하기 위해서는 가상 머신의 네트워크 어댑터 모드를 '브리지(Bridged)'로 변경해야 합니다. 이 설정은 가상 머신이 호스트 PC와 동일한 네트워크 대역의 IP를 할당받게 하여, 마치 별개의 컴퓨터처럼 동작하게 만듭니다.

사용하시는 가상 머신 프로그램(VMware, VirtualBox 등)의 설정 메뉴로 이동하여, 해당 가상 머신의 네트워크(Network) 또는 네트워크 어댑터(Network Adapter) 설정에서 연결 방식을 브리지(Bridged)로 변경해주세요.

 

4-2. 가상 머신 IP 주소 확인

ip a

또는

hostname -I

네트워크 설정 변경 후 가상 머신을 재부팅하고, 터미널에서 위 명령어를 통해 할당된 IP 주소를 확인합니다. 이 IP 주소로 외부에서 접속하게 됩니다.

 

5. 외부 접속 테스트 및 문제 해결

이제 실제로 외부에서 접속이 잘 되는지 테스트해 보겠습니다.

5-1. phpMyAdmin 웹 접속 테스트

http://[가상머신_IP주소]/phpmyadmin

호스트 PC의 웹 브라우저를 열고, 주소창에 위와 같이 입력합니다.
예시: http://192.168.1.100/phpmyadmin

로그인 페이지가 나타나면, 앞서 생성했던 admin 계정과 비밀번호로 로그인합니다.

 

5-2. 데이터베이스 직접 연결 테스트

HeidiSQL, DBeaver 등과 같은 DB 클라이언트 툴을 사용하여 직접 데이터베이스에 접속해볼 수 있습니다.

  • 호스트: 가상머신 IP 주소
  • 사용자: admin
  • 비밀번호: 위에서 설정한 비밀번호
  • 포트: 3306

 

5-3. 흔한 문제들과 해결 방법

만약 접속이 안 될 때, 이것부터 확인해보세요!

sudo systemctl status apache2
sudo systemctl status mariadb

서비스 상태 확인: 위 명령어로 Apache와 MariaDB 서비스가 정상적으로 실행 중인지 확인합니다.

 

ping [가상머신_IP주소]
telnet [가상머신_IP주소] 80
telnet [가상머신_IP주소] 3306

네트워크 연결 확인: ping 이나 telnet 명령어로 네트워크 연결과 포트가 열려있는지 확인합니다.

 

sudo tail -f /var/log/apache2/error.log
sudo tail -f /var/log/mysql/error.log

로그 파일 확인: 문제가 발생했을 때 가장 확실한 단서는 로그 파일에 있습니다. 위 명령어로 로그를 실시간으로 확인할 수 있습니다. 로그 파일의 내용을 해석하기 어려운경우 GPT에게 내용을 넘기면 해결 방법을 안내해줄겁니다.

 

6. 보안 강화 팁 (실무 환경을 위하여)

6-1. SSL 인증서로 HTTPS 적용하기

sudo apt install certbot python3-certbot-apache
sudo certbot --apache

실제 서비스를 운영한다면, 위 명령어를 통해 Let's Encrypt의 무료 SSL 인증서를 발급받아 통신을 암호화하는 것이 좋습니다.

 

6-2. phpMyAdmin 접속 IP 제한하기

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

보안을 위해 특정 IP 주소에서만 phpMyAdmin에 접속할 수 있도록 설정할 수 있습니다. 위 명령어로 설정 파일을 엽니다.

파일을 열고 아래 내용을 추가하여 허용할 IP 대역을 지정합니다.

<Directory /usr/share/phpmyadmin>
    Require ip 192.168.1.0/24
    # 특정 IP만 허용하려면: Require ip 192.168.1.100
</Directory>

 

마치며

이것으로 모든 설정이 끝났습니다. 이제 설치의 어려움은 뒤로하고 편하게 데이터베이스를 관리하며 개발에 집중하시길 바랍니다.

이번 포스팅이 여러분의 삽질을 조금이나마 덜어드렸다면 좋겠습니다.

 

물론 여기서 다룬 내용은 개발 환경에 초점을 맞췄으니, 실제 서비스를 운영할 때는 백업이나 보안 설정에 조금 더 신경 써야 한다는 점을 기억해주세요.

Top