easyfly 2025. 10. 28. 16:40
반응형

MySQL Workbench 사용법 — 화면 구성부터 실전 쿼리, 계정·백업·성능까지

1) 화면 빠르게 익히기 (스크린샷 기준 안내)

  • Navigator(좌측 상단)
    • Management: Server Status, Users and Privileges, Data Export/Import 등 관리 메뉴가 있습니다.
    • Instance: Startup/Shutdown, Server Logs, Options File(설정 파일) 등 인스턴스 제어.
    • Performance: Dashboard, Performance Reports, Performance Schema Setup.
  • 메인 탭 영역(중앙)
    • SQL 에디터(Query 1 등): 쿼리를 작성·실행하는 공간입니다. 위쪽의 번개 버튼이 실행(전체/선택).
    • Administration – Server Status: 현재 접속된 서버의 버전, 포트, 디렉터리, 로그 경로를 확인합니다.
  • 하단 Output 패널
    • 실행 결과 메시지, 오류, 경과 시간을 보여줍니다.
  • 우측 상단 도구막대
    • 실행(번개), 스크립트 저장, 포맷, 힌트 등.

팁: 화면 상단 Home 아이콘MySQL Connections에서 접속을 추가·편집합니다. 원격 서버는 Host, Port(3306), Username, 필요시 SSL 설정을 확인하십시오.

MySQL Workbench


2) 첫 연결과 기본 쿼리 실행

  1. 연결 만들기
    • Home → + → Connection Name 지정 → Hostname/IP, Port(기본 3306), Username 입력 → Test Connection로 확인 → OK.
  2. SQL 편집기 열기
    • 연결을 더블클릭 → 상단 Query 1 탭에 쿼리 작성.
  3. 샘플 실행
    • 번개 아이콘(Execute)으로 실행 → 하단 Action Output 및 결과 그리드 확인.
  4. SELECT VERSION(); SHOW DATABASES;


3) 스키마(데이터베이스)와 테이블 만들기

  1. 스키마 생성
    • 좌측 Schemas를 새로고침(우클릭 Refresh All)하면 demo가 보입니다.
  2. CREATE DATABASE demo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
  3. 사용 스키마 선택
  4. USE demo;
  5. 테이블 생성
  6. CREATE TABLE posts ( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(200) NOT NULL, body TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
  7. 데이터 입력/조회
  8. INSERT INTO posts (title, body) VALUES ('첫 글', '워크벤치에서 올린 글입니다.'); SELECT * FROM posts ORDER BY id DESC;

팁: 결과 그리드에서 직접 셀 편집 후 Apply를 누르면 GUI로도 수정·삽입이 가능합니다.


4) 계정과 권한 관리(Users and Privileges)

  1. 관리 화면 열기
    • Navigator → ManagementUsers and Privileges.
  2. 새 사용자 추가
    • Add Account → Login Name(appuser) 입력 → 인증 방식, 비밀번호 설정.
  3. 권한 부여
    • 좌측 사용자 선택 → Schema Privileges 탭 → Add Entry → 특정 스키마(demo) 선택 → SELECT, INSERT, UPDATE, DELETE, CREATE 등 필요한 권한을 체크 → Apply.
  4. 원격 접속 허용 필요 시
    • 사용자를 user@'%' 또는 특정 클라이언트 IP로 생성해야 합니다.
    CREATE USER 'appuser'@'%' IDENTIFIED BY '비밀번호';
    GRANT ALL PRIVILEGES ON demo.* TO 'appuser'@'%';
    FLUSH PRIVILEGES;
    
    • 서버 방화벽에서 3306/TCP 허용, MySQL 설정의 bind-address(0.0.0.0 또는 해당 NIC) 확인이 필요합니다.

5) 백업·복구(Data Export / Import)

  • 백업(Data Export)
    • Navigator → ManagementData Export
    • 백업할 스키마/테이블 선택 → Export to Self-Contained File(단일 .sql) 권장 → Start Export.
  • 복구(Data Import/Restore)
    • Data Import/RestoreImport from Self-Contained File 선택 → 대상 스키마 지정(없다면 Create New로 생성) → Start Import.

팁: 대용량 환경에서는 mysqldump/물리 백업(Percona XtraBackup 등)도 고려하십시오. 워크벤치는 논리 백업 기반으로 휴대성과 가독성이 좋습니다.


6) 서버 상태·로그·변수 점검

  • Server Status: 업타임, 포트, 에러로그 경로(/var/log/mysql/error.log 등) 확인.
  • Server Logs: 최근 에러/일반 로그를 바로 조회합니다. 연결 문제나 쿼리 오류 원인을 빠르게 파악합니다.
  • Options File: mysqld의 주요 옵션을 GUI로 보고 저장할 수 있습니다(재시작 필요할 수 있음).
  • Status and System Variables: autocommit, innodb_buffer_pool_size, max_connections 등 상태/변수를 검색해 점검합니다.

7) 성능 진단(Performance)

  • Dashboard: 연결 수, 트래픽, InnoDB 버퍼풀 사용률 등 요약 모니터링.
  • Performance Reports: Top I/O By Schema/Table, Statements With Full Table Scans, High Cost SQL 등 사전 정의 리포트로 병목을 찾습니다.
  • Performance Schema Setup: 필요시 Performance Schema 활성화/튜닝.

팁: 느린 쿼리는 EXPLAIN과 Visual Explain(툴바)로 실행 계획을 확인하고, 인덱스 추가·쿼리 리라이트를 검토하십시오.


8) 자주 쓰는 기능·단축키

  • 자동완성: Ctrl + Space
  • 선택 영역만 실행: 쿼리 일부 선택 후 실행(번개)
  • 포맷(Beautify): Ctrl + B
  • 결과 내 필터: 결과 그리드 상단 필터창에서 즉석 검색
  • EER 다이어그램: 상단 메뉴 File → New Model → Reverse Engineer로 DB를 다이어그램으로 뽑아 문서화

9) 연결·권한 트러블슈팅 체크리스트

  1. 네트워크: 서버 IP/포트 3306 접근 가능 여부(Telnet/Netcat)
  2. 방화벽: 서버(UFW/iptables)와 클라우드 보안그룹에서 3306 허용
  3. 바인드 주소: bind-address가 0.0.0.0 또는 서버 NIC IP인지
  4. 계정 호스트: 'user'@'%' 또는 정확한 클라이언트 IP로 생성되었는지
  5. 인증 방식: MySQL 8의 caching_sha2_password vs mysql_native_password 호환성
  6. 권한 범위: 필요한 스키마에 권한 부여 되었는지, FLUSH PRIVILEGES 수행 여부

10) 실무 예시 시나리오(끝까지 한 번에)

  1. 새 앱용 데이터베이스와 사용자 만들기
  2. CREATE DATABASE appdb DEFAULT CHARACTER SET utf8mb4; CREATE USER 'app'@'%' IDENTIFIED BY 'StrongPW!'; GRANT ALL PRIVILEGES ON appdb.* TO 'app'@'%'; FLUSH PRIVILEGES;
  3. 테이블/인덱스 구성
  4. USE appdb; CREATE TABLE members( id BIGINT PRIMARY KEY AUTO_INCREMENT, email VARCHAR(255) NOT NULL UNIQUE, name VARCHAR(100) NOT NULL, joined_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, KEY idx_joined_at (joined_at) );
  5. 성능 확인
    • 대용량 조회 쿼리에 WHERE joined_at BETWEEN ...를 사용한다면, idx_joined_at로 범위 스캔되는지 EXPLAIN 확인.
  6. 백업
    • Data Export로 appdb를 Self-Contained File로 스케줄링(정기 백업은 OS 크론+mysqldump 권장).
  7. 오류 발생 시
    • Server Logs에서 에러 코드 확인 → 필요한 경우 Options File의 변수 조정 후 재시작.

마무리

이 가이드만 따라도 연결 → 스키마/테이블 생성 → CRUD 실행 → 계정/권한 관리 → 백업/복구 → 성능 점검의 전 과정을 MySQL Workbench에서 안정적으로 수행하실 수 있습니다. 

반응형