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는 보통 다음과 같은 경우에 유용하게 활용된다.
- MySQL에서 지원하는 권한을 학습할 때
- MySQL에서 어떤 권한을 부여할 수 있는지 확인하는 용도로 활용 가능하다.
- 관리자가 권한을 부여할 때 참고 자료로 활용
- 사용자의 역할(Role)에 따라 적절한 권한을 부여할 때 참고할 수 있다.
- 보안 강화를 위해 권한을 검토할 때
- 불필요한 권한이 사용자에게 부여되지 않도록 하기 위해 사용 가능하다.
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: 특정 사용자 권한 제거하기
- 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 권한 관리 시 주의할 점
- 최소 권한 원칙(Principle of Least Privilege, POLP) 준수
- 사용자가 불필요한 권한을 가지지 않도록 제한해야 한다.
- 예를 들어, 일반 사용자가 SUPER 권한을 가지면 보안에 취약해질 수 있다.
- 권한 변경 후 FLUSH PRIVILEGES 실행
- GRANT 또는 REVOKE 명령어 실행 후 FLUSH PRIVILEGES; 를 실행하면 변경 사항이 즉시 반영된다.
- SHOW GRANTS를 사용하여 특정 사용자 권한을 주기적으로 점검
- 불필요한 권한이 부여되지 않았는지 정기적으로 확인해야 한다.
8. 마무리
MySQL에서 SHOW PRIVILEGES는 전체적인 권한 구조를 이해하는 데 필수적인 명령어다.
특정 사용자에게 부여된 권한을 확인하고 싶다면 SHOW GRANTS를 사용해야 한다.
데이터베이스 보안을 강화하려면 최소 권한 원칙을 적용하고, 필요할 때만 권한을 부여하는 것이 중요하다.
공식 가이드 문서
MySQL SHOW PRIVILEGES 공식 문서:
https://dev.mysql.com/doc/refman/8.0/en/show-privileges.html
'DB' 카테고리의 다른 글
[MySQL] SHOW CREATE USER 완벽 가이드 사용법(계정 생성 정보 확인) (0) | 2025.04.02 |
---|---|
[MySQL] RESET PASSWORD 완벽 가이드 사용법(비밀번호 변경) (0) | 2025.04.02 |
[MySQL] UNLOCK TABLES 완벽 가이드 사용법(테이블 잠금 해제) (0) | 2025.04.02 |
[MySQL] LOCK TABLES 완벽 가이드 사용법(테이블 잠금) (0) | 2025.04.02 |
[MySQL] FLUSH PRIVILEGES 완벽 가이드 사용법(캐시 갱신) (0) | 2025.04.02 |
[MySQL] SHOW GRANTS 완벽 가이드 사용법(사용자 권한 확인) (0) | 2025.04.02 |
[MySQL] SET PASSWORD 완벽 가이드 사용법(비밀번호 변경) (0) | 2025.04.02 |
[MySQL] RENAME USER 완벽 가이드 사용법(사용자 계정명 변경) (0) | 2025.04.01 |