MySQL에서 내 권한 확인하기
현재 MySQL 계정에 어떤 권한(privileges)이 부여되어 있는지 확인하려면 SHOW GRANTS 명령어를 사용하면 됩니다. 이 명령은 접속 중인 사용자에게 부여된 모든 권한 목록을 한눈에 보여줍니다.
기본 구문
구문은 매우 간단합니다.
SHOW GRANTS\G
여기서 \G는 결과를 세로 형태로 출력해 주는 옵션으로, 긴 권한 목록을 읽기 쉽게 만들어 줍니다.
실행 예시
실제로 위 구문을 실행하여 현재 계정의 권한을 조회해 보겠습니다.
mysql> SHOW GRANTS\G
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
*************************** 1. row *************************** Grants for root@%: GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`%` WITH GRANT OPTION *************************** 2. row *************************** Grants for root@%: GRANT BACKUP_ADMIN,BINLOG_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN, PERSIST_RO_VARIABLES_ADMIN,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SET_USER_ID, SYSTEM_VARIABLES_ADMIN,XA_RECOVER_ADMIN ON *.* TO `root`@`%` 2 rows in set (0.00 sec)
결과 해석
출력 결과를 살펴보면 두 개의 행(row)으로 구성되어 있습니다.
첫 번째 행은 *.*, 즉 모든 데이터베이스와 모든 테이블에 적용되는 전역(global) 권한을 나타냅니다. SELECT, INSERT, UPDATE, DELETE 같은 기본적인 DML 권한부터 CREATE, DROP, ALTER 같은 스키마 관리 권한, 그리고 REPLICATION, CREATE USER 등 서버 수준의 강력한 권한까지 포함되어 있습니다. 마지막의 WITH GRANT OPTION은 해당 사용자가 자신이 가진 권한을 다른 사용자에게도 부여할 수 있음을 의미합니다.
두 번째 행은 MySQL 8.0부터 도입된 동적(dynamic) 권한들을 보여줍니다. BACKUP_ADMIN, BINLOG_ADMIN, SYSTEM_VARIABLES_ADMIN 등은 백업, 바이너리 로그 관리, 시스템 변수 변경과 같은 세부적인 관리 작업을 위한 권한입니다.
참고 사항
특정 사용자의 권한을 확인하고 싶다면 SHOW GRANTS FOR '사용자명'@'호스트'; 형식으로 조회할 수 있습니다. 또한 현재 로그인한 계정뿐 아니라 다른 계정의 권한을 조회하려면 해당 작업을 수행할 수 있는 충분한 권한이 필요합니다.