MySQL에서 현재 접속한 사용자와 IP 확인하기: SHOW PROCESSLIST 명령어

2025. 1. 23. 21:25·Programming
728x90
반응형

MySQL에서 현재 접속한 사용자와 IP 확인하기: SHOW PROCESSLIST 명령어 완벽 가이드

데이터베이스 서버 관리자는 종종 현재 데이터베이스에 접속한 사용자와 해당 사용자의 IP 주소를 확인해야 하는 상황에 직면합니다. MySQL에서는 이를 손쉽게 확인할 수 있는 명령어인 SHOW PROCESSLIST를 제공합니다. 이번 글에서는 SHOW PROCESSLIST 명령어의 개념, 사용 방법, 주요 필드, 그리고 활용 사례를 자세히 알아보겠습니다.

1. SHOW PROCESSLIST란?

SHOW PROCESSLIST는 현재 MySQL 서버에 접속한 사용자와 실행 중인 쿼리 정보를 확인할 수 있는 명령어입니다. 이를 통해:

  • 현재 접속 중인 클라이언트의 **IP 주소**와 **사용자명** 확인.
  • 실행 중인 쿼리와 상태 확인.
  • 잠금(Lock)이나 비정상적인 세션 감지.
  • 성능 문제 진단.

SHOW PROCESSLIST 명령어 실행

MySQL 클라이언트에서 명령어를 실행하면 현재 서버에 접속한 세션 정보를 확인할 수 있습니다:

SHOW PROCESSLIST;

위 명령어는 현재 MySQL 사용자가 접근할 수 있는 연결만 표시합니다. 모든 연결을 보려면 SUPER 권한이 필요하며, SHOW FULL PROCESSLIST를 사용하면 쿼리의 전체 내용을 볼 수 있습니다.

2. SHOW PROCESSLIST 출력 필드

SHOW PROCESSLIST 명령어는 다음과 같은 주요 정보를 제공합니다:

필드 설명
Id 클라이언트 연결의 고유 ID
User 접속한 사용자명
Host 사용자가 접속한 호스트(IP 주소와 포트)
Db 접속 중인 데이터베이스 (NULL이면 선택된 DB 없음)
Command 현재 실행 중인 명령 (예: Query, Sleep 등)
Time 현재 명령이 실행된 시간(초)
State 현재 명령의 상태 (예: Sending data, Locked)
Info 실행 중인 쿼리의 내용 (FULL 옵션 사용 시 전체 표시)

출력 예제

다음은 SHOW PROCESSLIST 명령어 실행 결과의 예제입니다:

+----+------+-----------+------+---------+------+----------------+-------------------+
| Id | User | Host      | Db   | Command | Time | State          | Info              |
+----+------+-----------+------+---------+------+----------------+-------------------+
|  1 | root | localhost | test | Query   |    0 | Sending data   | SELECT * FROM tbl |
|  2 | app  | 192.168.1.1:12345 | mydb | Sleep   |  300 |                | NULL              |
+----+------+-----------+------+---------+------+----------------+-------------------+

**설명:** - User: 접속한 사용자 계정. - Host: 접속한 클라이언트의 IP 주소와 포트 번호. - Command: 실행 중인 명령 유형.

3. SHOW PROCESSLIST 활용 방법

SHOW PROCESSLIST 명령어는 데이터베이스 관리와 성능 진단에 유용합니다.

3.1 현재 접속 사용자와 IP 확인

사용자와 IP 주소를 확인하여 예상치 못한 접속이나 보안 위협을 감지할 수 있습니다:

SHOW PROCESSLIST;

출력의 Host 필드를 통해 접속자의 IP와 포트를 확인하세요.

3.2 느린 쿼리 감지

실행 시간이 오래 걸리는 쿼리를 감지하여 성능을 개선합니다:

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE Time > 10;

3.3 비정상 세션 종료

오래된 Sleep 상태의 세션을 종료하여 리소스를 확보합니다:

KILL [ID];

예를 들어, ID가 2인 세션을 종료하려면:

KILL 2;

4. SHOW PROCESSLIST의 한계

SHOW PROCESSLIST는 매우 유용한 도구이지만 몇 가지 한계도 있습니다:

  • **실시간 제한:** 실행 시점의 세션만 확인 가능하며, 과거 데이터는 볼 수 없음.
  • **제한된 출력:** 기본적으로 쿼리 내용은 100자까지만 표시(FULL 옵션 필요).
  • **대규모 시스템:** 많은 연결이 있는 환경에서는 전체 출력을 분석하기 어려울 수 있음.

5. SHOW PROCESSLIST 대안

MySQL 5.7 이상에서는 INFORMATION_SCHEMA.PROCESSLIST를 사용하여 더 많은 정보를 쿼리할 수 있습니다:

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;

또한, Percona의 pt-query-digest와 같은 도구를 사용하여 쿼리 성능을 분석할 수 있습니다.

6. 결론

SHOW PROCESSLIST는 현재 데이터베이스에 접속한 사용자와 IP를 확인하고 실행 중인 쿼리 상태를 파악하는 데 유용한 MySQL 명령어입니다. 이 명령어를 통해 보안 위협을 감지하고, 성능 병목을 해결하며, 데이터베이스의 전반적인 상태를 모니터링할 수 있습니다. 데이터베이스 관리와 최적화를 위해 정기적으로 활용해 보세요.

728x90
반응형
저작자표시 (새창열림)

'Programming' 카테고리의 다른 글

Kotlin의 Sealed Class: 개념, 활용법, 그리고 실용적인 사용 예제  (0) 2025.01.21
continue, break, return: 조건문에서의 차이와 활용 방법  (0) 2025.01.19
인프라스트럭처란? IT 시스템의 핵심 개념과 구성 요소  (1) 2024.12.23
CloudFront란? 글로벌 콘텐츠 전송 네트워크의 이해와 활용  (0) 2024.12.21
쿠버네티스와 HPA(수평 포드 자동 확장)에 대한 이해  (1) 2024.12.20
'Programming' 카테고리의 다른 글
  • Kotlin의 Sealed Class: 개념, 활용법, 그리고 실용적인 사용 예제
  • continue, break, return: 조건문에서의 차이와 활용 방법
  • 인프라스트럭처란? IT 시스템의 핵심 개념과 구성 요소
  • CloudFront란? 글로벌 콘텐츠 전송 네트워크의 이해와 활용
이프로그
이프로그
리뷰, 개발, 일상을 기록하는 블로그
    반응형
    250x250
  • 이프로그
    이프로그의 IT이야기
    이프로그
  • 전체
    오늘
    어제
    • 분류 전체보기 (158)
      • Programming (111)
        • C# WPF (11)
        • Java Spring (16)
        • JavaScript & TypeScript (5)
        • Git (9)
        • Database (5)
        • Etc (42)
      • 생활상식 (24)
      • 리뷰 (8)
      • 주식 (12)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      재테크
      자바스크립트 트릭
      데이터베이스 성능
      클라우드 네이티브
      투자
      rest api
      docker
      Apache Kafka
      투자전략
      서버 관리
      dynamicresource
      분산 메시징 시스템
      데이터 파이프라인
      C# WPF
      java8
      클라우드 컴퓨팅
      마이크로서비스
      이슈 트래킹
      주식투자
      소프트웨어 개발
      협업 도구
      XAML
      javascript
      DevOps
      ES6
      Java
      Kubernetes
      WPF
      데이터 바인딩
      웹 개발
    • 최근 댓글

    • 최근 글

    이프로그
    MySQL에서 현재 접속한 사용자와 IP 확인하기: SHOW PROCESSLIST 명령어
    상단으로

    티스토리툴바