MySQL에서 특정 사용자에게 부여된 권한을 확인하고 싶다면 SHOW GRANTS 명령어를 사용하면 됩니다. 기본 문법은 다음과 같습니다.
SHOW GRANTS FOR '사용자이름'@'호스트이름';
SHOW GRANTS 문법 설명
위 문법은 지정한 사용자가 가지고 있는 모든 권한 목록을 조회합니다. 특정 사용자의 권한을 확인할 때는 반드시 FOR 키워드를 함께 사용해야 하며, 사용자 이름과 호스트를 '사용자'@'호스트' 형식으로 지정합니다.
실제 사용 예제
예를 들어, 사용자 이름이 JOHN이고 호스트가 %(모든 호스트 허용)인 계정의 권한을 확인하려면 다음과 같이 쿼리를 실행합니다.
mysql> SHOW GRANTS FOR 'JOHN'@'%';
이 쿼리를 실행하면 아래와 같은 결과가 출력됩니다.
+--------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------- --------------+ | Grants for JOHN@% | +--------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------- --------------+ | 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 `JOHN`@`%` WITH GRANT OPTION | | GRANT BACKUP_ADMIN,BINLOG_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GR OUP_REPLICATION_ADMIN,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_SLAVE_A DMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SET_USE R_ID,SYSTEM_VARIABLES_ADMIN,XA_RECOVER_ADMIN ON *.* TO `JOHN`@`%` WITH GRANT OPTION | +--------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------- --------------+ 2 rows in set (0.00 sec)
결과 해석
출력 결과를 보면 JOHN@% 사용자는 전체 데이터베이스(*.*)에 대해 SELECT, INSERT, UPDATE, DELETE 등 대부분의 권한을 가지고 있으며, WITH GRANT OPTION이 포함되어 있으므로 다른 사용자에게 자신의 권한을 위임(부여)할 수도 있습니다.
또한 MySQL 8.0부터 추가된 동적 권한(Dynamic Privileges)인 BACKUP_ADMIN, BINLOG_ADMIN, SYSTEM_VARIABLES_ADMIN 등도 함께 부여되어 있음을 확인할 수 있습니다.
참고 사항
현재 로그인한 자신의 권한만 확인하려면 FOR 절 없이 SHOW GRANTS; 또는 SHOW GRANTS FOR CURRENT_USER;를 사용하면 됩니다.