MySQL 주요 클라이언트 도구 개요
MySQL 데이터베이스를 효율적으로 관리하고 운영하기 위해서는 다양한 클라이언트 도구의 역할과 사용법을 정확히 이해하는 것이 필수적입니다.
1. 핵심 클라이언트 명령어 도구
1.1 mysql (대화형 SQL 클라이언트)
- 서버로 SQL 쿼리를 전송하고 결과를 수신합니다.
- 데이터베이스 스키마 및 데이터를 직접 관리합니다.
- 내장된 도움말 시스템을 통해 명령어 가이드를 제공합니다.
1.2 mysqladmin (서버 관리 유틸리티)
- 명령줄 환경에서 MySQL 서버를 제어합니다.
- 데이터베이스 서버를 안전하게 종료(shutdown)합니다.
- 사용자 계정 비밀번호를 변경합니다.
1.3 mysqldump (논리적 백업 도구)
- 테이블 구조와 데이터를 SQL 스크립트 형태로 추출하여 백업합니다.
2. 클라이언트 내장 도움말 및 단축키 활용
mysql 클라이언트 내부에서 빠른 작업 수행과 정보 확인을 위해 다음 단축키 및 명령어를 활용할 수 있습니다.
| 명령어 / 단축키 | 기능 설명 |
|---|---|
\h, help, ? |
사용 가능한 내장 명령어 목록 출력 |
\G |
쿼리 결과를 행과 열을 전환하여 세로로 정렬된 형태로 출력 |
\T, tee |
실행되는 명령과 결과를 지정된 파일에 기록 (세션 종료 시 중단) |
\c, Ctrl+c |
현재 입력 중인 쿼리 라인 취소 |
\s, status |
현재 서버 연결 상태 및 시스템 정보 조회 |
\., source |
외부 SQL 스크립트 파일을 읽어서 실행 (주로 데이터 복원 시 사용) |
\u, use |
작업할 데이터베이스 변경 |
| 키보드 단축키 | 위/아래 화살표: 이전 명령어 탐색, Tab: 자동 완성, Ctrl+L: 화면 지우기, \q: 종료 |
3. SQL 구문 도움말 조회 실전 예제
도움말 시스템을 통해 각 SQL 구문의 정확한 문법과 옵션을 확인할 수 있습니다. 다음은 주요 구문들의 도움말 출력 및 활용 예시입니다.
3.1 전체 SQL 카테고리 조회
mysql> help contents;
You asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the following
categories:
Account Management
Administration
Compound Statements
Data Definition
Data Manipulation
Data Types
Functions
...
3.2 권한 부여(GRANT) 구문 확인
mysql> help grant
Name: 'GRANT'
Description:
Syntax:
GRANT
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user [auth_option] [, user [auth_option]] ...
...
-- 예시: 특정 IP에서 접속하는 개발자 계정에 sales_db 전체 권한 부여
GRANT ALL PRIVILEGES ON sales_db.* TO 'dev_admin'@'10.0.0.5';
-- 예시: 사용자 생성 후 권한 할당
CREATE USER 'report_user'@'192.168.1.20' IDENTIFIED BY 'R3p0rt!ng';
GRANT SELECT ON analytics_db.* TO 'report_user'@'192.168.1.20';
3.3 데이터베이스 생성(CREATE DATABASE) 구문
mysql> help create database
Name: 'CREATE DATABASE'
Description:
Syntax:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification] ...
create_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
-- 예시: utf8mb4 문자셋을 사용하는 ecommerce_db 생성
CREATE DATABASE ecommerce_db
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
3.4 테이블 생성(CREATE TABLE) 구문
mysql> help create table
Name: 'CREATE TABLE'
Description:
Syntax:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[partition_options]
...
-- 예시: InnoDB 엔진을 사용하는 orders 테이블 생성
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT NOT NULL,
order_date DATETIME DEFAULT CURRENT_TIMESTAMP,
total_amount DECIMAL(10, 2)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3.5 테이블 구조 변경(ALTER TABLE) 구문
mysql> help alter table
Name: 'ALTER TABLE'
Description:
Syntax:
ALTER [ONLINE|OFFLINE] [IGNORE] TABLE tbl_name
[alter_specification [, alter_specification] ...]
...
-- 예시: orders 테이블의 스토리지 엔진을 InnoDB로 변경하고 행 포맷 압축
ALTER TABLE orders ENGINE = InnoDB;
ALTER TABLE orders ROW_FORMAT = COMPRESSED;
-- 예시: AUTO_INCREMENT 값 재설정
ALTER TABLE orders AUTO_INCREMENT = 1000;
3.6 데이터 조회(SELECT) 구문
mysql> help select;
Name: 'SELECT'
Description:
Syntax:
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
...
select_expr [, select_expr ...]
[FROM table_references ...]
[WHERE where_condition]
[GROUP BY ...]
[HAVING where_condition]
[ORDER BY ...]
[LIMIT ...]
...
3.7 데이터 수정(UPDATE) 및 삭제(DELETE) 구문
mysql> help update;
Name: 'UPDATE'
Description:
Syntax:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
...
mysql> help delete;
Name: 'DELETE'
Description:
Syntax:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[PARTITION (partition_name,...)]
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
...
3.8 데이터 삽입(INSERT) 구문
mysql> help insert;
Name: 'INSERT'
Description:
Syntax:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
[PARTITION (partition_name,...)]
[(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
...
3.9 사용자 계정 관리(CREATE USER / DROP USER)
mysql> help create user;
Name: 'CREATE USER'
Description:
Syntax:
CREATE USER user_specification [, user_specification] ...
user_specification:
user [ identified_option ]
...
-- 예시: 특정 호스트에서 접속하는 서비스 계정 생성
CREATE USER 'app_service'@'172.16.0.100' IDENTIFIED BY 'SecureP@ssw0rd!';
mysql> help drop user;
Name: 'DROP USER'
Description:
Syntax:
DROP USER user [, user] ...
-- 예시: 불필요해진 서비스 계정 삭제
DROP USER 'app_service'@'172.16.0.100';