- 1 Ubuntu에 MariaDB를 가장 빠르게 설치하는 방법 (20.04 / 22.04 / 24.04 지원)
- 2 Ubuntu 버전에 맞는 MariaDB 버전 선택
- 3 최신 버전이 필요할 경우 (공식 MariaDB 저장소 추가)
- 4 현재 설치된 MariaDB 버전 확인 방법
- 5 MariaDB 초기 보안 설정 완전 가이드 (mysql_secure_installation)
- 6 root로 로그인할 수 없는 이유 (Access Denied 오류)
- 7 root를 비밀번호 인증으로 변경하는 방법 (필요한 경우에만)
- 8 현재 인증 방법 확인 방법
- 9 일반적인 오류 및 해결 방법
- 10 문자 인코딩을 utf8mb4로 설정 (깨진 문자 방지)
- 11 데이터베이스 생성 시 utf8mb4 지정 (권장)
- 12 애플리케이션 사용자 생성 및 권한 부여
- 13 원격 액세스 사용자 생성 (필요한 경우에만)
- 14 현재 사용자 및 권한 확인 방법
- 15 일반적인 권한 오류 및 해결 방법
- 16 MariaDB에서 원격 연결 허용 방법 (외부 접근 실패 시 해결)
- 17 외부 연결이 안 될 때 체크리스트
- 18 중요한 보안 주의사항
- 19 MariaDB 시작 실패 시 문제 해결 (failed 오류)
- 20 접근 거부 오류 원인 요약
- 21 기본 성능 향상 (초보자용)
- 22 자주 묻는 질문 (FAQ)
- 23 결론: Ubuntu에서 MariaDB를 안전하게 사용하기
Ubuntu에 MariaDB를 가장 빠르게 설치하는 방법 (20.04 / 22.04 / 24.04 지원)
Ubuntu에서 MariaDB를 바로 사용하고 싶다면, 아래 단계대로 진행하여 설치와 시작 확인을 마치세요. 특별한 이유가 없는 한 Ubuntu 기본 저장소에서 설치하는 것이 가장 안전하고 안정적인 옵션입니다.
① 패키지 정보 업데이트
sudo apt update
sudo apt upgrade -y
② MariaDB 설치
sudo apt install -y mariadb-server mariadb-client
설치 중에 별도의 특별 설정이 필요하지 않습니다. 설치가 완료되면 MariaDB 서비스가 자동으로 시작됩니다.
③ MariaDB가 실행 중인지 확인
sudo systemctl status mariadb
active (running) 이 표시되면 MariaDB가 정상적으로 실행되고 있는 것입니다.
④ 자동 시작 활성화 (보통 필요 없지만 확인 권장)
sudo systemctl enable mariadb
⑤ MariaDB에 연결하고 동작 확인
sudo mysql
다음 프롬프트가 보이면 설치가 성공한 것입니다:
MariaDB [(none)]>
종료하려면 exit; 를 입력하세요.
설치 후 필수 보안 초기화
설치 직후 MariaDB는 최소한의 보안 설정만 적용됩니다. 다음 명령을 반드시 실행하세요:
sudo mysql_secure_installation
일반적으로 아래와 같이 답변하는 것이 권장됩니다:
- 익명 사용자 제거 → Y
- 원격 root 로그인 차단 → Y
- 테스트 데이터베이스 제거 → Y
- 권한 테이블 재로드 → Y
이로써 Ubuntu에서 보안이 강화된 MariaDB 환경 설정이 완료됩니다.
Ubuntu 버전에 따라 설치되는 MariaDB 버전
- Ubuntu 20.04 → MariaDB 10.3 시리즈
- Ubuntu 22.04 → MariaDB 10.6 시리즈
- Ubuntu 24.04 → MariaDB 10.11 시리즈 (LTS)
대부분의 사용자는 Ubuntu 기본 버전으로 충분합니다. 최신 기능이 필요할 경우에만 공식 저장소를 고려하세요.
설치 실패 또는 서비스가 시작되지 않을 경우 빠른 점검
sudo systemctl status mariadb로 오류 확인sudo journalctl -xe로 상세 로그 확인df -h로 디스크 공간 확인
대부분의 경우 문제는 디스크 공간 부족이나 설정 파일 오타 때문입니다.
Ubuntu 버전에 맞는 MariaDB 버전 선택
Ubuntu에서 MariaDB를 사용할 때 대부분의 경우 가장 안전한 선택은 기본 저장소 버전입니다. 보안 업데이트와 의존성 호환성이 자동으로 관리되어 초보자와 중급 사용자에게 적합합니다.
Ubuntu 기본 저장소 버전 (권장)
- Ubuntu 20.04 → MariaDB 10.3 시리즈
- Ubuntu 22.04 → MariaDB 10.6 시리즈
- Ubuntu 24.04 → MariaDB 10.11 시리즈 (LTS)
특별한 요구 사항이 없는 한, 이 버전들은 프로덕션 환경에서도 충분히 실용적입니다.
최신 버전이 필요할 경우 (공식 MariaDB 저장소 추가)
최신 기능이 필요하다면 공식 MariaDB 저장소를 추가할 수 있습니다. apt-key가 폐기되었으므로, signed-by 방식을 사용합니다.
① GPG 키 저장
sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://mariadb.org/mariadb_release_signing_key.asc \
| sudo gpg --dearmor -o /etc/apt/keyrings/mariadb.gpg
② Ubuntu 코드명 확인
lsb_release -cs
예시:
- 20.04 →
focal - 22.04 →
jammy - 24.04 →
noble
③ 공식 저장소 추가 (예: 10.11 시리즈)
echo "deb [signed-by=/etc/apt/keyrings/mariadb.gpg] \
https://mirror.mariadb.org/repo/10.11/ubuntu \
$(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/mariadb.list
④ 패키지 업데이트 및 설치
sudo apt update
sudo apt install mariadb-server mariadb-client
공식 저장소 사용 시 주의사항
- Ubuntu 기본 버전보다 최신 기능을 사용할 수 있음
- 향후 의존성 충돌 위험이 존재함
- 프로덕션 서버에서는 충분한 테스트가 필요함
프로덕션 환경에서는 안정성에 중점을 둘지 최신 기능에 중점을 둘지 명확히 결정하세요.
현재 설치된 MariaDB 버전 확인 방법
mysql --version
예시:
mysql Ver 15.1 Distrib 10.6.16-MariaDB
버전을 명시적으로 확인하면 문제 해결 및 마이그레이션 작업이 훨씬 쉬워집니다.
MariaDB 초기 보안 설정 완전 가이드 (mysql_secure_installation)
MariaDB를 설치한 직후에는 최소한의 보안 설정만 적용됩니다. 안전하게 운영하려면 다음 명령을 반드시 실행하십시오:
sudo mysql_secure_installation
실행하면 여러 프롬프트가 나타납니다. 대부분의 경우 다음과 같은 답변을 권장합니다.
권장 답변
- Enter current password for root: → Enter 키를 누르세요 (첫 실행 시 설정되지 않음)
- Switch to unix_socket authentication? → Y (Ubuntu에서 권장)
- Change the root password? → N (unix_socket 인증을 사용하는 경우)
- Remove anonymous users? → Y
- Disallow root login remotely? → Y
- Remove test database and access to it? → Y
- Reload privilege tables now? → Y
이로써 기본 보안 구성이 완료됩니다.
root로 로그인할 수 없는 이유 (Access Denied 오류)
Ubuntu에서는 root 사용자가 기본적으로 unix_socket 인증을 사용합니다. 따라서 일반 비밀번호 기반 로그인은 작동하지 않습니다.
예시 증상
mysql -u root -p
→ Access denied for user 'root'@'localhost'
올바른 로그인 방법 (Ubuntu 기본값)
sudo mysql
가장 안전하고 권장되는 방법입니다.
root를 비밀번호 인증으로 변경하는 방법 (필요한 경우에만)
외부 도구나 애플리케이션에서 root로 연결해야 할 경우에만 인증 방식을 변경하십시오.
① MariaDB에 연결
sudo mysql
② 인증 플러그인 변경
ALTER USER 'root'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'StrongPasswordHere';
FLUSH PRIVILEGES;
③ 변경 확인
SELECT user, host, plugin FROM mysql.user;
mysql_native_password가 표시되면 변경이 성공한 것입니다.
현재 인증 방법 확인 방법
sudo mysql -e "SELECT user, host, plugin FROM mysql.user;"
주요 인증 방법:
- unix_socket → Ubuntu 기본, 안전
- mysql_native_password → 비밀번호 기반 인증
특별한 이유가 없는 한, root는 unix_socket 인증을 유지하는 것이 가장 안전합니다.
일반적인 오류 및 해결 방법
ERROR 1698 (28000): 사용자 ‘root’@’localhost’에 대한 접근 거부
- 원인: 비밀번호 기반 로그인 시도
- 해결책:
sudo mysql을 사용해 로그인
mysql_secure_installation을 찾을 수 없음
which mysql_secure_installation으로 확인- 설치되지 않은 경우
sudo apt install mariadb-server실행
문자 인코딩을 utf8mb4로 설정 (깨진 문자 방지)
MariaDB에서 다국어 텍스트와 이모지를 안전하게 처리하려면 utf8mb4를 사용하는 것이 권장됩니다. 이 설정이 없으면 인코딩 문제나 데이터 손실이 발생할 수 있습니다.
① 설정 파일 편집
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld] 섹션에 다음 줄을 추가하거나 수정하십시오:
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
② MariaDB 재시작
sudo systemctl restart mariadb
③ 설정 확인
sudo mysql -e "SHOW VARIABLES LIKE 'character_set%';"
utf8mb4가 표시되면 설정이 성공한 것입니다.
데이터베이스 생성 시 utf8mb4 지정 (권장)
전역 설정과 관계없이 문자 집합을 명시적으로 정의하고 싶다면, 데이터베이스 생성 시 지정하십시오.
CREATE DATABASE sample_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
이 데이터베이스 내에서 생성되는 모든 테이블은 utf8mb4를 상속합니다.
애플리케이션 사용자 생성 및 권한 부여
운영 환경에서는 애플리케이션 연결에 root 사용자를 절대 사용하지 말아야 합니다. 전용 사용자를 생성하고 최소한의 필요한 권한만 부여하십시오.
① MariaDB에 로그인하기
sudo mysql
② 사용자 생성 (로컬 연결)
CREATE USER 'app_user'@'localhost'
IDENTIFIED BY 'StrongPasswordHere';
③ 데이터베이스 권한 부여
GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
원격 액세스 사용자 생성 (필요한 경우에만)
외부 서버나 클라우드 환경에서 연결해야 할 경우에만 구성하십시오.
CREATE USER 'app_user'@'%'
IDENTIFIED BY 'StrongPasswordHere';
GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'%';
FLUSH PRIVILEGES;
Note: “%” 와일드카드는 모든 호스트에서의 연결을 허용합니다. 운영 환경에서는 특정 IP 주소를 지정하는 것이 더 안전합니다.
현재 사용자 및 권한 확인 방법
SELECT user, host FROM mysql.user;
SHOW GRANTS FOR 'app_user'@'localhost';
일반적인 권한 오류 및 해결 방법
Access denied for user ‘app_user’
- 호스트 지정 오류 (localhost와 %의 차이)
- FLUSH PRIVILEGES가 실행되지 않음
- 연결 시 데이터베이스 이름 오류
Unknown database
- 데이터베이스 이름 오타
- 대상 데이터베이스에 권한이 부여되지 않음
MariaDB에서 원격 연결 허용 방법 (외부 접근 실패 시 해결)
기본적으로 MariaDB는 로컬 연결만 허용합니다. 외부 서버나 클라우드 환경에서 연결해야 할 경우 다음 설정을 구성하십시오.
① bind-address 변경
구성 파일을 편집하십시오:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
다음 줄을 찾으십시오:
bind-address = 127.0.0.1
외부 연결을 허용하려면 다음과 같이 변경하십시오:
bind-address = 0.0.0.0
저장 후 MariaDB를 재시작하십시오:
sudo systemctl restart mariadb
② 방화벽에서 포트 3306 열기
Ubuntu에서 UFW를 사용하는 경우:
sudo ufw allow 3306
sudo ufw reload
보안을 강화하려면 소스 IP 주소를 지정하십시오:
sudo ufw allow from 192.168.1.10 to any port 3306
③ 원격 액세스 사용자 생성
CREATE USER 'app_user'@'%'
IDENTIFIED BY 'StrongPasswordHere';
GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'%';
FLUSH PRIVILEGES;
보안을 강화하려면:
CREATE USER 'app_user'@'192.168.1.10'
IDENTIFIED BY 'StrongPasswordHere';
외부 연결이 안 될 때 체크리스트
1. MariaDB가 실행 중인가요?
sudo systemctl status mariadb
2. 포트 3306이 리스닝 중인가요?
sudo ss -tulnp | grep 3306
0.0.0.0:3306이 표시되면 모든 인터페이스에서 올바르게 리스닝 중인 것입니다.
3. 클라우드 환경(AWS / GCP / VPS) 사용 시
- 보안 그룹에서 포트 3306이 열려 있는지 확인
- 외부 방화벽이 연결을 차단하고 있지 않은지 확인
4. 오류 메시지에 따른 원인
MySQL 서버에 연결할 수 없음
- 포트가 닫혀 있음
- bind-address가 변경되지 않음
- 방화벽이 연결을 차단
사용자에 대한 접근 거부
- 사용자 호스트 지정 오류
- 비밀번호 오류
- 권한이 부여되지 않음
연결 시간 초과
- 클라우드 측 보안 설정
- 네트워크 라우팅 문제
중요한 보안 주의사항
- 운영 환경에서 “%” 사용을 피하십시오
- 가능한 경우 VPN 접근 사용
- SSL/TLS 연결 활성화 고려
- 원격 root 로그인 절대 허용 금지
MariaDB 시작 실패 시 문제 해결 (failed 오류)
① 서비스 상태 확인
sudo systemctl status mariadb
② 상세 로그 확인
sudo journalctl -xe
sudo cat /var/log/mysql/error.log
③ 일반적인 원인
- 구성 파일 구문 오류
- 디스크 공간 부족
- 포트 충돌 (MySQL이 이미 실행 중)
④ 디스크 공간 확인
df -h
접근 거부 오류 원인 요약
- 비밀번호 오류
- 호스트 지정 오류 (localhost와 %의 차이)
- FLUSH PRIVILEGES 미실행
- root 표준 로그인 시도 (
sudo mysql필요)
기본 성능 향상 (초보자용)
Advanced tuning은 필요하지 않지만, 최소한 다음 설정을 확인하십시오.
① 슬로우 쿼리 로그 활성화
다음 내용을 50-server.cnf에 추가하십시오:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
MariaDB를 재시작하십시오:
sudo systemctl restart mariadb
② 인덱스 사용 확인
슬로우 쿼리는 적절한 인덱스가 없을 수 있습니다.
EXPLAIN SELECT * FROM sample_table WHERE column_name = 'value';
③ 서버 리소스 확인
top
htop
메모리가 부족하면 서버 플랜 업그레이드를 고려하십시오.
자주 묻는 질문 (FAQ)
Ubuntu 22.04에서 MariaDB 버전을 고정하려면 어떻게 해야 하나요?
apt-mark hold mariadb-server를 사용하십시오.
루트 비밀번호를 잊어버렸을 때 어떻게 재설정하나요?
안전 모드로 시작하고 비밀번호를 재구성하여 재설정할 수 있습니다. 자세한 단계는 전용 가이드를 참조하십시오.
MariaDB 포트 번호를 어떻게 변경하나요?
50-server.cnf를 port = 3307과 같이 수정한 뒤 서비스를 재시작하십시오.
결론: Ubuntu에서 MariaDB를 안전하게 사용하기
- 기본 저장소 버전을 사용하는 것이 가장 안전한 옵션입니다
- 항상 mysql_secure_installation을 실행하십시오
- 애플리케이션 연결에 루트를 절대 사용하지 마십시오
- 필요할 때만 원격 접근을 활성화하십시오
- 문제 해결 시 로그 확인이 최우선입니다
이 단계들을 따라 하면 Ubuntu에서 보안이 강화된 프로덕션 수준의 MariaDB 환경을 구축할 수 있습니다.


