DB

[MySQL] SHOW PRIVILEGES 완벽 가이드 사용법(모든 권한 확인)

인생아 2025. 4. 2. 18:13
반응형

MySQL은 강력한 사용자 계정 및 권한 관리 시스템을 제공한다. 데이터베이스 보안 및 운영 관리를 위해서는 사용자가 어떤 권한을 가질 수 있는지 정확히 이해하는 것이 필수적이다.

이때 SHOW PRIVILEGES 명령어를 사용하면 MySQL에서 지원하는 모든 권한의 종류와 그 기능을 확인할 수 있다.

1. SHOW PRIVILEGES란?

SHOW PRIVILEGES는 MySQL에서 사용 가능한 모든 권한(Privileges) 목록과 그 설명을 출력하는 명령어이다.

즉, 특정 사용자에게 부여된 권한을 조회하는 것이 아니라 MySQL이 제공하는 전체적인 권한의 종류를 확인하는 용도로 사용된다.

기본 구문

SHOW PRIVILEGES;
  • 실행하면 MySQL에서 지원하는 모든 권한 목록이 출력된다.
  • 각 권한의 이름, 기능, 적용 가능한 개체(예: 테이블, 데이터베이스) 등이 표시된다.
반응형

2. SHOW PRIVILEGES 실행 예제

MySQL 콘솔에서 다음 명령어를 실행한다.

SHOW PRIVILEGES;

실행 결과 예시:

권한(Privilege) 설명(Description) 적용 대상(Context)
SELECT 데이터를 조회할 수 있는 권한 테이블, 컬럼
INSERT 데이터를 삽입할 수 있는 권한 테이블
UPDATE 데이터를 수정할 수 있는 권한 테이블, 컬럼
DELETE 데이터를 삭제할 수 있는 권한 테이블
CREATE 새로운 데이터베이스 또는 테이블을 생성할 수 있는 권한 데이터베이스, 테이블
DROP 데이터베이스 또는 테이블을 삭제할 수 있는 권한 데이터베이스, 테이블
GRANT 다른 사용자에게 권한을 부여할 수 있는 권한 전체 시스템
SUPER 서버 관리 및 특정 전역 설정을 변경할 수 있는 권한 전체 시스템

이 목록은 MySQL 버전 및 사용자의 설정에 따라 다를 수 있다.

3. SHOW PRIVILEGES의 활용법

SHOW PRIVILEGES는 보통 다음과 같은 경우에 유용하게 활용된다.

  1. MySQL에서 지원하는 권한을 학습할 때
    • MySQL에서 어떤 권한을 부여할 수 있는지 확인하는 용도로 활용 가능하다.
  2. 관리자가 권한을 부여할 때 참고 자료로 활용
    • 사용자의 역할(Role)에 따라 적절한 권한을 부여할 때 참고할 수 있다.
  3. 보안 강화를 위해 권한을 검토할 때
    • 불필요한 권한이 사용자에게 부여되지 않도록 하기 위해 사용 가능하다.
반응형

4. SHOW PRIVILEGES와 SHOW GRANTS 차이점

명령어 기능
SHOW PRIVILEGES MySQL에서 지원하는 전체 권한 목록을 출력
SHOW GRANTS 특정 사용자가 현재 부여받은 권한을 출력
  • SHOW PRIVILEGES는 MySQL에서 제공하는 모든 권한을 조회하는 용도로 사용된다.
  • 반면, SHOW GRANTS FOR '사용자'@'호스트';는 특정 사용자에게 할당된 권한을 조회하는 데 사용된다.

예제: 특정 사용자에게 할당된 권한 조회

SHOW GRANTS FOR 'admin'@'localhost';

실행 결과 예시:

+----------------------------------------------------+
| Grants for admin@localhost                         |
+----------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' |
+----------------------------------------------------+

이 명령어는 admin 사용자에게 어떤 권한이 부여되어 있는지 확인할 때 사용된다.

반응형

5. SHOW PRIVILEGES를 이용한 실용적인 권한 설정 예제

예제 1: 사용자에게 권한 부여하기

아래 예제에서는 user1에게 SELECT 및 INSERT 권한을 부여하는 방법을 보여준다.

GRANT SELECT, INSERT ON mydb.* TO 'user1'@'localhost';
  • mydb 데이터베이스의 모든 테이블에 대해 SELECT 및 INSERT 권한을 부여
  • SHOW PRIVILEGES; 명령어를 실행하면 SELECT 및 INSERT 권한이 MySQL에서 어떤 역할을 하는지 확인 가능

예제 2: 특정 사용자 권한 제거하기

sql
복사편집
REVOKE INSERT ON mydb.* FROM 'user1'@'localhost';
  • user1 사용자에게서 INSERT 권한만 제거
  • 권한을 제거한 후 SHOW GRANTS FOR 'user1'@'localhost'; 로 확인 가능

6. MySQL에서 가장 중요한 권한 정리

SHOW PRIVILEGES를 통해 확인할 수 있는 중요한 권한을 정리해보자.

권한 기능
ALL PRIVILEGES 모든 권한을 부여
SELECT 데이터 조회 가능
INSERT 데이터 삽입 가능
UPDATE 데이터 수정 가능
DELETE 데이터 삭제 가능
CREATE 새로운 테이블 또는 데이터베이스 생성 가능
DROP 데이터베이스 또는 테이블 삭제 가능
GRANT OPTION 다른 사용자에게 권한을 부여할 수 있음
SUPER 서버의 전역 설정을 변경 가능
RELOAD MySQL 서버를 다시 로드 가능
SHUTDOWN MySQL 서버를 종료 가능
반응형

7. MySQL 권한 관리 시 주의할 점

  1. 최소 권한 원칙(Principle of Least Privilege, POLP) 준수
    • 사용자가 불필요한 권한을 가지지 않도록 제한해야 한다.
    • 예를 들어, 일반 사용자가 SUPER 권한을 가지면 보안에 취약해질 수 있다.
  2. 권한 변경 후 FLUSH PRIVILEGES 실행
    • GRANT 또는 REVOKE 명령어 실행 후 FLUSH PRIVILEGES; 를 실행하면 변경 사항이 즉시 반영된다.
  3. SHOW GRANTS를 사용하여 특정 사용자 권한을 주기적으로 점검
    • 불필요한 권한이 부여되지 않았는지 정기적으로 확인해야 한다.

8. 마무리

MySQL에서 SHOW PRIVILEGES는 전체적인 권한 구조를 이해하는 데 필수적인 명령어다.
특정 사용자에게 부여된 권한을 확인하고 싶다면 SHOW GRANTS를 사용해야 한다.

데이터베이스 보안을 강화하려면 최소 권한 원칙을 적용하고, 필요할 때만 권한을 부여하는 것이 중요하다.

공식 가이드 문서

MySQL SHOW PRIVILEGES 공식 문서:
https://dev.mysql.com/doc/refman/8.0/en/show-privileges.html

반응형