AD JB Toolbox 01

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

mariadb 클라이언트는 서버에 접속해 SQL을 실행하는 프로그램입니다. 운영체제의 명령줄에서 접속 명령을 실행하고, 접속한 클라이언트 안에서는 SQL이나 SOURCE 명령을 사용해 UTF-8 파일을 실행합니다.

접속 전에 준비할 정보

MariaDB 서버가 실행 중이고 Windows 설치 또는 Ubuntu 설치에서 만든 course_user@127.0.0.1과 학습용 비밀번호가 있어야 합니다. 이 글은 같은 컴퓨터의 서버에 TCP로 접속하는 조건이며 원격 서버 주소를 임의로 사용하는 절차가 아닙니다.

정보 공통 실습 값
프로토콜·주소 TCP·127.0.0.1
포트 3306; 설치 때 변경했다면 그 값
사용자 course_user
비밀번호 직접 정한 학습용 비밀번호; -p 뒤에 실제 값을 적지 않음
문자 집합 클라이언트 접속의 기본 문자 집합 utf8mb4
SQL 파일 UTF-8 텍스트 파일; .sql.txt가 아닌 .sql 확장자

터미널에서 클라이언트에 접속해 로컬 SQL 파일을 읽고 서버가 처리한 결과를 받는 흐름

터미널과 SQL 입력 위치 구분하기

Windows의 MariaDB Command Prompt 또는 Ubuntu 터미널에서 아래 명령을 실행합니다. 명령이 길어도 하나의 명령입니다. 일반 PowerShell에서 실행 파일을 못 찾으면 설치한 bin 경로를 지정합니다.

mariadb --protocol=tcp --host=127.0.0.1 --port=3306 --user=course_user --password --default-character-set=utf8mb4 --abort-source-on-error
옵션 역할
--protocol=tcp 소켓 기본 선택과 혼동하지 않고 TCP 사용
--host·--port 접속할 서버 주소와 포트
--user 운영체제 로그인 이름과 별개인 데이터베이스 사용자
--password 비밀번호 입력을 요청; 값이 명령 기록에 남지 않도록 사용
--default-character-set=utf8mb4 클라이언트 통신의 문자 집합 지정
--abort-source-on-error SOURCE 파일 실행 중 SQL 오류가 나면 그 파일 실행을 중단

연결 옵션과 클라이언트 명령의 적용 조건은 공식 mariadb 클라이언트 문서에서 확인할 수 있습니다. 연결되어 MariaDB [(none)]> 같은 입력 표시가 나오면 이제 SQL을 입력합니다. (none)은 아직 기본 데이터베이스를 선택하지 않았다는 뜻이며 서버 접속 실패 메시지가 아닙니다.

SELECT VERSION() AS server_version;
SELECT USER() AS connection_user,
       CURRENT_USER() AS privilege_account;
SELECT 2 + 3 AS total, '안녕하세요' AS greeting;

total 5와 greeting 안녕하세요가 나오면 계산과 UTF-8 문자열 왕복을 확인한 것입니다. privilege_account는 권한 판단에 사용된 계정입니다. USER()가 보여 주는 접속 사용자·호스트 표기와 CURRENT_USER()는 인증·계정 선택에 따라 차이가 날 수 있습니다.

명령 종료·취소·연결 종료

SQL 문장은 여러 줄로 작성할 수 있고 일반적으로 세미콜론 뒤 Enter를 눌러 실행합니다. 세미콜론 없이 다음 줄 표시가 나오는 것은 곧바로 오류가 아니라 입력이 이어지고 있다는 뜻일 수 있습니다.

SELECT
  10 + 20 AS total;

잘못 입력한 문장을 보내지 않고 취소하려면 클라이언트 안에서 \c를 입력합니다. PowerShell이나 Bash에서 실행하는 명령이 아닙니다. 결과가 넓어서 보기 어렵다면 세미콜론 대신 \G로 세로 출력할 수도 있습니다.

SELECT VERSION() AS server_version\G

\G 뒤에는 이 예제처럼 추가 세미콜론을 붙일 필요가 없습니다. SQL이 아니라 클라이언트 명령까지 한 파일에 무작정 섞으면 다른 실행 도구에서 동작이 달라질 수 있으므로, SQL 파일은 SQL 문장 위주로 보관합니다.

EXIT;

EXIT를 실행하면 클라이언트 연결이 종료되어 운영체제의 입력 위치로 돌아옵니다. 서버 서비스가 중지되거나 데이터베이스가 삭제되는 것은 아닙니다.

UTF-8 SQL 파일을 준비하기

메모장이나 코드 편집기로 lesson04-check.sql 파일을 만들고 다음 전체 내용을 UTF-8로 저장합니다. 한글이 들어 있으므로 편집기의 저장 인코딩을 확인하세요. Windows에서 파일 형식을 모든 파일로 선택하거나 실제 확장자를 확인해 .sql.txt로 저장되지 않게 합니다.

SELECT VERSION() AS server_version;
SELECT USER() AS connection_user,
       CURRENT_USER() AS privilege_account;
SELECT 2 + 3 AS total, '안녕하세요' AS greeting;

예를 들어 Windows에서는 C:\mariadb-course\lesson04-check.sql, Ubuntu에서는 /home/사용자명/mariadb-course/lesson04-check.sql에 저장할 수 있습니다. 해당 폴더와 파일은 직접 준비한 실제 위치이며, 예시 사용자명을 그대로 복사하지 않습니다. 파일 경로를 바꾸는 것은 접속할 서버 주소를 바꾸는 것과 다른 작업입니다.

SOURCE로 파일 실행하고 결과 확인

앞의 접속 명령으로 다시 연결한 뒤, 클라이언트 안에서 실제 파일 경로를 지정합니다. Windows 경로는 이 예제처럼 슬래시로 적으면 역슬래시 해석의 혼동을 줄일 수 있습니다. SOURCE의 경로는 서버가 아니라 클라이언트가 실행 중인 컴퓨터의 파일을 가리킵니다.

SOURCE C:/mariadb-course/lesson04-check.sql;

Ubuntu에서는 자신의 실제 홈 경로에 맞춰 다음처럼 실행합니다. 이미 파일을 저장한 위치와 일치해야 합니다.

SOURCE /home/사용자명/mariadb-course/lesson04-check.sql;

파일의 세 SELECT 결과가 순서대로 나오며 마지막에는 total 5, greeting 안녕하세요가 예상됩니다. 이 파일은 테이블을 만들거나 행을 추가하지 않으므로 반복 실행해도 상품 데이터가 늘어나지 않습니다. 파일 입력과 실행 위치를 익혔다면 상품 테이블 실습의 전체 SQL 파일도 같은 방식으로 실행할 수 있습니다.

다만 파일 실행은 일반적으로 모든 문장을 하나의 트랜잭션으로 묶거나 오류 이전 작업을 자동 복구하는 기능이 아닙니다. --abort-source-on-error도 오류 이후의 파일 진행을 멈추는 옵션일 뿐 이미 성공한 INSERT나 DDL을 되돌리는 옵션이 아닙니다.

파일·인코딩·인증 오류를 구분하기

증상 확인과 복구
SOURCE가 파일을 못 찾음 파일 위치·확장자 확인 → Windows 슬래시 경로 사용 → 파일을 연 클라이언트 PC 기준인지 확인
한글이 깨짐 원본 파일을 UTF-8로 다시 저장 → 연결 문자 집합을 utf8mb4로 지정 → 터미널 표시 인코딩 확인
Windows 표시만 깨짐 클라이언트 종료 후 해당 터미널에서 chcp 65001을 실행하고 다시 연결해 비교; 원본 DB 저장값도 별도로 확인
Access denied 계정·비밀번호·TCP Host 점검; 서버 연결 오류와 분리
SQL 오류 뒤 결과가 부족함 오류 문장 확인 → 이미 실행된 작업 확인 → 파일 수정 후 필요한 범위만 다시 실행

SQL 문법 오류는 잘못된 단어·따옴표·쉼표 등을 확인하고, 파일 읽기 오류는 경로와 권한을 확인합니다. 같은 해결 방법으로 모든 오류를 처리하지 않습니다. SELECT @@character_set_client, @@character_set_connection, @@character_set_results;로 연결 문자 집합을 확인할 수 있지만, 이 설정을 바꾼다고 이미 잘못 저장된 데이터가 자동 복원되지는 않습니다.

같은 카테고리의 다른 글
MariaDB / 샘플 데이터베이스 employees 설치하는 방법

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

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

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

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

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

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

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

Windows MSI 설치에서 서버·클라이언트, 관리자 인증, 서비스와 포트를 설정합니다. SQL 실행을 확인하고 이후 강좌에서 사용할 학습용 계정을 준비하며 시작·접속 오류를 점검합니다.

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

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

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

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

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

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

MariaDB / 피벗 테이블 만드는 방법

MariaDB / 피벗 테이블 만드는 방법

피벗 테이블은 엑셀의 유용한 기능 중의 하나입니다. 예를 들어 아래의 왼쪽 데이터를 오른쪽 표처럼 만드는 것이 피벗 테이블입니다. 조건에 따라 그룹화시켜서 보기 좋게 데이터를 정리하는 것이라 보면 됩니다. MariaDB에서도 몇 가지 함수를 이용하여 피벗 테이블을 만들 수 있습니다.

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

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

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

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

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

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

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

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

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

MariaDB / VIEW

MariaDB / VIEW

VIEW는 가상의 테이블입니다. 실제로 데이터를 저장하지 않고, 기존의 하나 이상의 테이블을 기반으로 한 쿼리 결과를 테이블처럼 사용할 수 있게 해줍니다. 뷰는 복잡한 쿼리를 단순화하고, 보안 및 데이터 관리에 유용하게 사용됩니다.