AD JB Toolbox 01

MariaDB 강좌 / Ubuntu에 MariaDB 설치하고 서버 실행하기

Ubuntu에서는 APT로 MariaDB 서버와 클라이언트를 설치하고 systemd 서비스 상태를 확인합니다. 새 패키지 설치의 관리자 접속은 Unix 소켓 인증을 사용하는 경우가 많으므로, Windows에서 설정한 root 비밀번호 접속 절차를 그대로 적용하지 않습니다.

Ubuntu 버전과 기존 설치 확인

이 글은 systemd를 사용하는 Ubuntu 24.04 LTS의 새 로컬 학습 환경을 기준으로 합니다. sudo를 사용할 수 있는 운영체제 계정과 패키지 저장소에 접근할 네트워크가 필요합니다. 컨테이너나 systemd가 없는 환경에서는 서비스 관리 명령이 다를 수 있습니다.

cat /etc/os-release
command -v mariadb
systemctl status mariadb --no-pager

새 환경에서는 프로그램 경로나 서비스가 없다는 결과가 나올 수 있습니다. 기존 서비스가 보이면 운영 용도와 데이터 위치를 먼저 확인하세요. 이 절차를 기존 서버의 무조건적인 재설치·업그레이드 절차로 사용하지 않습니다.

기본 저장소의 서버·클라이언트 설치

먼저 패키지 목록을 갱신하고 현재 선택되는 패키지 버전을 확인합니다. Ubuntu 기본 저장소 버전과 MariaDB 공식 저장소 버전은 다를 수 있습니다. 이 강좌의 기초 SQL에는 최신 숫자의 버전을 강제로 맞출 필요가 없으므로 별도 저장소를 추가하지 않는 경로를 사용합니다.

sudo apt update
apt-cache policy mariadb-server
sudo apt install mariadb-server mariadb-client

설치할 패키지 목록과 다운로드 용량을 확인한 뒤 진행합니다. 여러 서버로 구성하는 Galera 클러스터를 따로 만드는 실습이 아니므로 클러스터 설정은 추가하지 않습니다. 설치 경로의 기본은 공식 설치 안내에서 확인할 수 있습니다.

mariadb --version
systemctl is-active mariadb
systemctl is-enabled mariadb

is-active가 active이면 서버 서비스가 현재 실행 중이며, is-enabled는 부팅 시 시작 설정을 별도로 보여 줍니다. disabled라고 해서 지금 실행 중인 서버가 반드시 중지된 것은 아닙니다. 실행되지 않은 새 학습 서비스는 다음처럼 시작합니다.

sudo systemctl start mariadb
sudo systemctl status mariadb --no-pager

부팅 시에도 자동 시작하도록 정하려면 sudo systemctl enable mariadb를 사용합니다. 이 선택은 현재 실행 상태와 구분해 기록합니다.

root 접속과 소켓 인증 이해하기

새 Ubuntu 패키지의 기본 인증 구성을 사용하는 경우에는 아래처럼 로컬 소켓으로 접속합니다. sudo가 확인하는 운영체제 권한과 MariaDB의 root 인증을 구분하세요.

sudo mariadb --protocol=socket
SELECT VERSION() AS server_version;
SELECT USER() AS connection_user, CURRENT_USER() AS privilege_account;
SELECT 1 + 1 AS result;

관리자 권한 계정과 result 2가 나오면 SQL 실행이 가능합니다. root 계정에 비밀번호를 새로 만들어야만 접속할 수 있다고 단정하지 않습니다. 실제 인증 플러그인과 기존 설정에 따라 다른 접속 방법이 필요할 수 있으며 기본 소켓 인증의 의미는 MariaDB 인증 설명에서 확인할 수 있습니다.

sudo mariadb도 실패한다면 설정 파일에 TCP 프로토콜이 강제되었는지, 소켓 파일과 서버의 실행 상태가 맞는지 확인합니다. 정상 계정을 무작정 비밀번호 재설정 모드로 바꾸기 전에 현재 인증 조건부터 확인하세요.

기본 보안 설정의 질문을 이해하고 선택하기

새 설치의 익명 사용자·테스트 데이터베이스 등 초기 구성을 정리할 필요가 있으면 다음 스크립트를 실행할 수 있습니다. 기존 서버에서는 현재 사용 중인 계정과 데이터베이스를 먼저 확인합니다.

EXIT;
sudo mariadb-secure-installation
질문 또는 선택 이 학습 환경에서 판단할 기준
현재 root 비밀번호 소켓 인증으로 관리자 접속하는 새 환경이라면 비밀번호를 따로 정하지 않았을 수 있습니다. 실제 인증 구성에 맞춰 답합니다.
unix_socket 인증 로컬 sudo 관리자 접속 방식을 유지하려는 경우 이를 고려합니다. 모든 질문에 같은 답을 넣지 않습니다.
root 비밀번호 변경 소켓 인증을 유지한다면 별도 비밀번호가 필수라고 보지 않습니다. 현재 인증 방식을 모르면 임의로 전환하지 않습니다.
익명 사용자 제거 새 학습 환경에서 익명 접속이 필요하지 않다면 제거합니다.
원격 root 로그인 차단 로컬 학습에 원격 root 접속은 필요하지 않습니다.
test 데이터베이스 제거 학습자가 새로 만든 shopcourse와 별개인지 확인하고 사용하지 않는 초기 test만 대상으로 판단합니다.

질문의 표시 순서와 문구는 패키지 버전·현재 계정 상태에 따라 다를 수 있습니다. 이 스크립트는 모든 학습 데이터베이스를 지우는 초기화 명령이 아니며, 인증을 바꾼 경우에는 그 이후 관리자 접속 방법도 함께 확인해야 합니다.

TCP 접속용 학습 계정 준비

다시 sudo mariadb --protocol=socket으로 관리자 접속합니다. 4~6강에서는 root 대신 course_user@127.0.0.1로 접속하므로, 계정이 없는 새 환경에서 아래를 실행합니다. 비밀번호 자리에는 직접 정한 학습용 비밀번호를 넣으세요.

CREATE USER 'course_user'@'127.0.0.1'
  IDENTIFIED BY 'CHANGE_THIS_TO_YOUR_OWN_PASSWORD';

GRANT ALL PRIVILEGES ON shopcourse.*
  TO 'course_user'@'127.0.0.1';

SHOW GRANTS FOR 'course_user'@'127.0.0.1';

shopcourse라는 이름의 데이터베이스 범위에만 학습용 관리 권한을 부여합니다. 서버 전체 권한이나 권한 재부여 옵션을 주는 예제가 아닙니다. CREATE USER·GRANT를 실행한 뒤 별도의 FLUSH PRIVILEGES가 필요한 관리 테이블 직접 수정 방식도 사용하지 않습니다.

같은 계정이 존재한다는 오류가 나오면 삭제해서 다시 만드는 대신 SELECT User, Host FROM mysql.user WHERE User = 'course_user';로 현재 User·Host를 확인합니다. 서로 다른 Host의 계정은 별개일 수 있습니다. 계정 생성 문법과 데이터베이스 권한 문법은 공식 문서를 참고하세요.

EXIT;
mariadb --protocol=tcp --host=127.0.0.1 --port=3306 --user=course_user --password --default-character-set=utf8mb4 --abort-source-on-error
SELECT CURRENT_USER() AS privilege_account;

course_user@127.0.0.1이 반환되는지 확인합니다. 이 명령은 TCP 주소를 명시했으므로 root의 Unix 소켓 접속과 다른 경로입니다. 실제 파일 실행은 클라이언트·SQL 파일 강좌와 연결해서 사용합니다.

접속 문제와 서비스 변경 되돌리기

증상 확인 방법
서비스 시작 실패 sudo journalctl -u mariadb -n 80 --no-pager로 최근 해당 서비스 로그 확인
Can't connect systemctl is-active mariadb, 소켓·TCP 구분, 3306 또는 선택한 포트 확인
Access denied 관리자 소켓 접속과 course_user TCP 접속 구분, 비밀번호·Host 확인
패키지 버전이 예시와 다름 apt-cache policy mariadb-server와 SELECT VERSION(); 결과 비교

설정 파일을 변경해야 하면 사용 중인 파일을 먼저 확인하고 사본을 만듭니다. Ubuntu 패키지에서는 /etc/mysql/mariadb.conf.d/ 아래 파일이 사용되는 경우가 많지만 설치 방식에 따라 다릅니다. 학습 서비스의 설정만 변경하고 sudo systemctl restart mariadb 후 접속을 검사하세요. 문제가 생기면 원래 사본으로 되돌린 뒤 다시 시작합니다.

서버만 잠시 중지하려면 sudo systemctl stop mariadb, 직접 추가한 자동 시작 설정을 해제하려면 sudo systemctl disable mariadb를 사용합니다. 이 명령은 데이터 폴더를 삭제하지 않습니다. 데이터 디렉터리를 지우거나 패키지를 purge하는 작업을 일반적인 접속 오류 해결 단계로 사용하지 않습니다.

같은 카테고리의 다른 글
MariaDB 강좌 / 문자열 타입 선택하기: CHAR·VARCHAR·TEXT

MariaDB 강좌 / 문자열 타입 선택하기: CHAR·VARCHAR·TEXT

CHAR·VARCHAR·TEXT를 저장 목적에 따라 선택하고 문자 수·바이트 수·끝 공백을 비교합니다. 한글과 이모지 입력, 길이 초과 오류, 정렬 규칙과 긴 본문 저장 시 주의점을 설명합니다.

MariaDB 강좌 / 날짜와 시간 저장하기: DATE·DATETIME·TIMESTAMP

MariaDB 강좌 / 날짜와 시간 저장하기: DATE·DATETIME·TIMESTAMP

DATE·DATETIME·TIMESTAMP의 저장 의미와 시간대 처리를 비교합니다. 동일 입력의 한국 시간·UTC 조회 결과, 버전별 TIMESTAMP 범위, 날짜 오류와 설정 복원을 실습합니다.

MariaDB 강좌 / NULL·기본값·NOT NULL·CHECK로 입력 조건 정하기

MariaDB 강좌 / NULL·기본값·NOT NULL·CHECK로 입력 조건 정하기

NULL·빈 문자열·0·입력 생략을 구분하고 DEFAULT·NOT NULL·CHECK의 역할을 실습합니다. nullable 열의 CHECK 예외, 실패 입력, 제약 이름과 설정 복원 방법을 설명합니다.

MariaDB 강좌 / 첫 실습: 상품 테이블을 만들고 데이터를 넣어 조회하기

MariaDB 강좌 / 첫 실습: 상품 테이블을 만들고 데이터를 넣어 조회하기

상품 세 건을 저장하는 전체 SQL로 테이블 생성·입력·조회 과정을 실습합니다. 구조와 행 수, 가격·재고 조건의 예상 결과를 확인하고 반복 입력 오류와 실습 테이블 초기화 범위를 구분합니다.

MariaDB 강좌 / 명령줄 클라이언트로 접속하고 SQL 파일 실행하기

MariaDB 강좌 / 명령줄 클라이언트로 접속하고 SQL 파일 실행하기

터미널 명령과 SQL 입력 위치를 구분하고 학습 계정으로 접속합니다. UTF-8 SQL 파일의 SOURCE 실행, 예상 결과, 오류 중단·한글 표시·경로 문제를 함께 확인합니다.

MariaDB 강좌 / MariaDB란? 데이터베이스·SQL·MySQL과의 관계

MariaDB 강좌 / MariaDB란? 데이터베이스·SQL·MySQL과의 관계

MariaDB 서버·클라이언트와 데이터베이스·테이블·행·열의 관계를 상품 예제로 이해합니다. SQL의 역할, MySQL과의 관계, 이후 강좌에서 사용할 실습 환경을 구분합니다.

MariaDB 강좌 / 기본키·AUTO_INCREMENT·UNIQUE로 행 식별하기

MariaDB 강좌 / 기본키·AUTO_INCREMENT·UNIQUE로 행 식별하기

기본키·자동 증가·고유 제약을 고객 데이터로 구분하고 중복 입력을 확인합니다. nullable UNIQUE, 복합 기본키와 트랜잭션 취소 후 자동 번호가 빠지는 경우를 실습합니다.

MariaDB 강좌 / Ubuntu에 MariaDB 설치하고 서버 실행하기

MariaDB 강좌 / Ubuntu에 MariaDB 설치하고 서버 실행하기

Ubuntu APT 설치 후 서버 실행·자동 시작·관리자 소켓 인증을 확인합니다. 로컬 TCP 학습 계정을 만들고 패키지 버전, 인증 오류와 서비스 로그를 확인하는 절차를 설명합니다.

MariaDB / 데이터베이스 저장 위치 변경하는 방법

MariaDB / 데이터베이스 저장 위치 변경하는 방법

MariaDB의 버전이 12.1이라고 할 때, 윈도우용 MariaDB의 기본 설치 위치는 C:\Program Files\MariaDB 12.1, 데이터베이스 저장 위치는 C:\Program Files\MariaDB 12.1\data입니다. 데이터베이스 저장 위치를 다음으로 변경해보겠습니다. D:\Database\MariaDB\data

MariaDB / 샘플 데이터베이스 employees 설치하는 방법

MariaDB / 샘플 데이터베이스 employees 설치하는 방법

데이터베이스를 다루는 공부를 할 때 데이터가 들어있는 데이터베이스가 있으면 좋습니다. 데이터베이스를 직접 만드는 방법도 있지만, 공개된 샘플 데이터베이스를 이용하면 편합니다. 예를 들어 SQL Server라면 AdventureWorks라는 샘플 데이터베이스를 마이크로소프트에서 제공합니다. MariaDB라면 employees를 사용하면 됩니다.