MySQL에서 특정 사용자에게 부여된 권한(Grant) 목록을 확인하고 싶다면 SHOW GRANTS 문을 사용하면 됩니다. 이 명령어는 해당 계정에 적용된 모든 권한 설정을 한눈에 보여주므로, 권한 관리나 보안 점검 시 매우 유용합니다.
SHOW GRANTS 기본 문법
SHOW GRANTS FOR '사용자이름'@'호스트이름';
여기서 호스트 이름(HostName)은 '%'(모든 호스트 허용) 또는 'localhost'(로컬 접속만 허용)로 지정할 수 있습니다.
루트(root) 계정 권한 조회 예제
실제로 루트 계정에 부여된 권한을 확인하려면 아래와 같이 실행합니다.
mysql> SHOW GRANTS FOR 'root'@'%';
실행 결과
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 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 | | 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.17 sec)
결과 해석
위 출력 결과는 두 가지 부분으로 구성되어 있습니다.
- 일반 권한: SELECT, INSERT, UPDATE, DELETE 등 데이터 조작 및 데이터베이스 구조 변경에 필요한 기본적인 권한들이 포함되어 있습니다. 마지막의 WITH GRANT OPTION은 루트 계정이 다른 사용자에게 권한을 부여할 수 있음을 의미합니다.
- 동적 권한(Dynamic Privileges): BACKUP_ADMIN, SYSTEM_VARIABLES_ADMIN 등 MySQL 8.0부터 도입된 동적 권한들입니다. 백업, 복제, 시스템 변수 관리 등 서버 수준의 고급 작업에 필요한 권한입니다.
참고: 현재 로그인한 사용자의 권한 확인
현재 접속 중인 계정의 권한만 간단히 확인하고 싶다면 호스트 정보 없이 다음과 같이 실행할 수도 있습니다.
mysql> SHOW GRANTS; -- 또는 mysql> SHOW GRANTS FOR CURRENT_USER;
이처럼 SHOW GRANTS 문을 활용하면 계정별 권한을 손쉽게 조회할 수 있으며, 불필요하게 과도한 권한이 부여되지 않았는지 점검하는 데 활용할 수 있습니다.