DB

[MySQL] (권한관리4️⃣) 사용자별 리소스 제한 설정하기 (연결 수, 쿼리 수 등)

인생아 2025. 7. 10. 14:54
반응형

MySQL은 단순히 권한만 제어하는 것이 아니라, 계정별 리소스 사용량도 정밀하게 제한할 수 있다.
특정 계정이 과도한 연결이나 대량 쿼리로 시스템에 부담을 주지 않도록 관리하는 것이 핵심이다.
특히 다수의 외부 시스템이나 자동화 프로그램이 접속하는 환경에서는 리소스 제한 설정은 필수 보안/운영 전략이다.

🔧 지원되는 리소스 제한 항목

MySQL에서는 사용자 생성 시 다음과 같은 자원 제한을 설정할 수 있다.

항목 설명
MAX_QUERIES_PER_HOUR 시간당 허용 쿼리 수
MAX_UPDATES_PER_HOUR 시간당 허용 데이터 수정 쿼리 수
MAX_CONNECTIONS_PER_HOUR 시간당 최대 접속 수
MAX_USER_CONNECTIONS 해당 계정의 동시 접속 최대 수

이 제한값은 단위 시간(1시간 기준) 혹은 실시간으로 동작하며, 초과 시 자동으로 차단된다.

반응형

🧪 실전 예제: 사용자별 리소스 제한 설정

✅ 1. 계정 생성과 동시에 리소스 제한 적용

CREATE USER 'apiuser'@'%' IDENTIFIED BY 'secure123'
WITH
  MAX_QUERIES_PER_HOUR 1000
  MAX_UPDATES_PER_HOUR 200
  MAX_CONNECTIONS_PER_HOUR 50
  MAX_USER_CONNECTIONS 10;
  • 1시간 동안 1000개의 쿼리, 200개의 업데이트만 허용
  • 시간당 최대 50번 연결 가능
  • 동시에 접속 가능한 연결 수는 10개 제한

✅ 2. 기존 사용자에 리소스 제한 추가

ALTER USER 'apiuser'@'%'
WITH
  MAX_QUERIES_PER_HOUR 500
  MAX_USER_CONNECTIONS 5;
  • 기존 사용자에 제한을 추가하거나 변경할 때 사용

✅ 3. 제한값 제거

ALTER USER 'apiuser'@'%' WITH MAX_QUERIES_PER_HOUR 0;
  • 0은 무제한을 의미
  • 주의: 설정 삭제가 아닌, "제한 없음"을 의미함

🔍 현재 설정 확인 방법

직접 확인 명령은 없지만, SHOW CREATE USER로 설정값을 간접 확인할 수 있다.

SHOW CREATE USER 'apiuser'@'%';

출력 예:

CREATE USER 'apiuser'@'%' IDENTIFIED WITH 'mysql_native_password' BY '***'
WITH MAX_QUERIES_PER_HOUR 500
     MAX_USER_CONNECTIONS 5;

또는 mysql.user 테이블에서 직접 확인 가능:

SELECT user, host, max_questions, max_updates, max_connections, max_user_connections
FROM mysql.user
WHERE user = 'apiuser';
반응형

💡 실무 운영 팁

  • API 접속용 계정, 외부 시스템 연동 계정은 반드시 제한을 걸어야 한다
  • 분석 툴이나 자동화 툴에서 반복 쿼리 폭주 시 시스템 전체가 느려질 수 있다
  • 리소스 제한은 권한과 별도로 작동하므로 병행 설정이 가능하다
  • 사용자별 접속 수나 쿼리량이 급증하는 경우 알림을 연동하는 것도 좋다
  • 제한된 계정은 초과 시 Too many connections 또는 User 'xxx' has exceeded the 'max_questions' resource 같은 오류를 반환한다

✅ 정리

  • MySQL 사용자 계정은 WITH 옵션을 통해 정밀한 리소스 제한 설정 가능하다
  • 실시간 또는 시간 단위의 접속 수, 쿼리 수, 업데이트 수를 제한할 수 있다
  • 과도한 리소스 사용을 차단하여 시스템 안정성을 확보할 수 있다
  • 모든 외부 연동 계정, 자동화 계정은 반드시 제한을 적용해야 한다
  • ALTER USER로 제한을 조정하고, SHOW CREATE USER 또는 mysql.user 테이블로 확인한다

🔗 공식 문서 참고
MySQL 8.0 Reference Manual - Resource Control

 

반응형