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 입력 위치 구분하기
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;로 연결 문자 집합을 확인할 수 있지만, 이 설정을 바꾼다고 이미 잘못 저장된 데이터가 자동 복원되지는 않습니다.











